公链开发学习笔记(二)

公链设计两种思路

1.由顶向底:目前设计者经验不足,难以驾驭

2.由底向顶:从一个原始的区块链项目,主键增加函数,形成一个功能齐备的公链。本课程采用这样的方式。

如何选择共识机制

  • POW的工程化实际实现

  • POS的工程化实际实现

  • 通过实现的目标选择共识

    • PoW:更加去中心化

      • 先演示一个只有POW的简单区块链,代码在 https://github.com/GenaroSanada/Course中可以找到,演示了一个PoW挖矿的实现过程。

      • go run pow/main.go,启动服务程序

      • 打开新的命令行,用curl命令: curl -i -X POST -H 'Content-Type: application/json' -d '{"Result": 42}' http://localhost:8080

      • 服务端接收到命令,开始挖矿

      • PoW通过difficulty设置难度值,可以根据memory hard分为抗asc矿机和不抗asc矿机的类型

    • PoS:更加低功耗

      • 主要是根据押注的大小设计排序方式,无论是随记排序还是顺序排序

      • go run pos/main.go,启动程序。

      • 在命令行输入:nc localhost 8545,输入token balance和Result

      • 和POW不同,POS没有在generis block中做太多的事情,而是在如何做排列上做了很多事情。POS的核心就是找到一个合理的排列的方法,可以是随机或者顺序的,只要排列的方法难以凑成固定的顺序。如果顺序是有规律的,就可能引发连环作恶的可能。需要有额外的信息来生成随机数,因为没有额外的信息,区块链中的随机数都不是真的随机数,区块链也很难记录下随机数。

      • 随机数是需要被证明的,而随机数的过程难以证明。如果过程容易证明,那么就是一个固定的数而不是随机数。所以需要去合理地设计一个随机的过程。

    • PoX:自定义的proof需要满足几个特性

      • 节点的参与需要有门槛

        • 门槛的范围必须一开始是小范围,然后慢慢扩大。在工程化的过程中,这种方式可以比较快的找到问题并进行处理。
      • 签名验证时间短

        • proof,即验证,需要的时间要短,才可能有比较高的tps。
      • 节点提供时间维度的信息

        • POX是一种异步的点对点的系统,节点如果不提供时间维度的信息的话,就有人能在时间维度进行作弊。

如何使用通信协议

  • 通信协议的选择

    • go get -d github.com/libp2p/go-libp2p,可以直接用IPFS的P2P进行快速开发。目前点对点的协议比较成熟,基本都是根据DHT分布式哈希表进行逐步演进的。

    • DHT分布式哈希表,三代DHT

      • Chord(通过自己找到上下家,然后再找上下家,如此遍历)、Pastry(查找速度比较快,全部查找,组成圆形的结构)

      • Tapestry

      • Kadmelia:是目前工程上主要使用的是第三代的分布式哈希表。

        • Kad协议

          • 主要使用项目:Ethereum、Emule、IPFS、Genaro

          • 使用的主要原因:有账户系统(nodeID),快速查找节点,可以防止flood攻击,适用于KV系统

    • 在项目文件夹目录下运行:go run main.go -l 10000 -secio,启动节点

    • 然后复制产生的新的连接当前节点的命令,新打开一个命令行,运行,例如:go run main.go -l 10006 -d /ip4/127.0.0.1/tcp/10004/ipfs/QmNyoZF6tHdfPNme1K7XKk5a47pa9uir8zUKBSQWBpZvyx -secio

主流公链设计比较

  • Bitcoin

    • 工程化的使用POW实现了去中心化,开启了新纪元

    • UTXO需要更少的空间,提供了账户的隐私。

    • 开启了大航海时代

  • Ethereum

    • POW的抗asic的改造——dagger,memory hard的POW方式

    • 基于Kad改造的P2P协议创造了account系统

    • 加入EVM,开启了智能合约时代。

    • 加入gas的设计,防止黑客的攻击

  • EOS

    • 非常完善的治理结构设计

    • 相对比较大的账户系统——开户费

    • 偏向于中心化的高速TPS公链——适合金融为主的dApp

  • NEO

    • 趋向于中心化的节点设计

    • 相对完善的社区提交机制

    • dBFT共识:继承了BFT的优点以及竞选在里面

  • Qtum

    • POS共识机制更低功耗

    • x86虚拟机兼容性更高

    • AAL涵盖了UTXO和account

  • Genaro

    • SPoR+POS低功耗的同时加入存储提供辅助

    • EVM虚拟机上加新的pocode保证dapp开发者迁移

    • Kad同构允许一个账户nodeID绑定储存和公链

设计高tps公链的工程思路

  • 更好的共识机制

  • 更快的验证时间

  • 高TPS=部分去中心化

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容