我为什么选择区块链技术? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
BlockHeader
V2EX    区块链

我为什么选择区块链技术?

  •  
  •   BlockHeader 2019-09-13 00:16:40 +08:00 2276 次点击
    这是一个创建于 2220 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一直想写篇文章,讲讲自己对区块链的理解,讲讲对区块链技术的理解。很多优秀的技术人,对区块链技术即好奇又担心。区块链离钱很近,经常和金融的东西混在一起。很多人,简单的认为区块链就是炒币,区块链就是传销。

    01 什么是区块链? 区块链是个综合型跨界交叉学科,由三大块组成:P2P 网络通讯,加密理论以及博弈论组成。P2P 网络通讯是区块链的基础。加密理论,保证账户安全,交易安全以及区块安全。博弈论,帮助在多个节点之间达成共识。共识的算法有很多:POW,POS,DPOS,BFT,PBFT,LBFT 等等。经济模型,在共识机制的基础上,进一步从经济激励的方面,设计稳定长久的模型。代币,是经济模型的一种展现形式。比特币的代币,就是对转账支付费用,支付给矿工。矿工有利可图,从而保持稳定的比特币网络。以太坊作为世界计算机,增加了智能合约,提出了 GAS 模型。转账或者执行智能合约计算都需要消耗 GAS,也就是消耗以太代币。这些代币,因为有参与方的博弈,天然的是一种标的,也就是“商品”。从而,代币就有了价格。

    推荐大家看看 Bitcoin 的源代码,最少看看《精通比特币》。能对比特币或者区块链技术有大致的理解。

    02 区块链有没有价值? 很多人(了解区块链的,不了解区块链的)都会问同样的问题。不同的人,有不同的答案。有些人说,区块链的价值是去中心化,提高效率。有些人说,区块链的价值在于共识,有共识就有价值。有些人说,区块链没有任何价值,就是骗局。

    从技术人的角度,区块链的价值在于区块链是一种新的“媒介”。区块链,作为一种媒介,能让信息透明,不可篡改。麦克卢汉的《理解媒介》告诉我们,媒介可能会改变人和人的协同方式。刚开始,被区块链的技术吸引,因为区块链作为一种“工具”,能让更多的人彼此信任协作。至于,这种新的协同方式,具体会发展到什么形态,还不知道。去中心化,也只是新的一种协同方式。

    区块链的价值和代币的价格,是两回事。区块链的技术有价值。代币的价格,目前更多是一种标的,在目前没有监管的情况下,和区块链的价值几乎没有太多的联系。

    区块链,再牛,也只是一种媒介。不需要妖魔化,也不可小看它。没有什么技术是一步到位的,允许它慢慢发展和演进。但也没有什么技术就是最后的形态。

    03 区块链的未来怎样? 区块链的未来怎样,应该没有人能现在说清楚。未来需要一步步探索,区块链本身也是在发展。去中心化,是否能完全颠覆中心化?我不确定。中心化提供服务,有更好的效率和用户体验。去中心化,更强调数据的透明安全。未来可能是一种中心化和去中心化的结合的模式。

    04 币圈和币价 在区块链行业野蛮生长的这几年,我自己也无奈的得出一个朴素的观点:币价和技术几乎没有关系。币,作为一种标的,慢慢的变成了炒作。发现有个神奇的现象,刚开始的时候,技术人还有心思辨别,项目方是不是真的是传销币。后来好像都麻木了,甚至有的时候,自己也糊涂了,究竟是交易模式的创新,还是传销的新变种。现在都是事后英雄了,成功的项目就是创新,失败的就是传销。

    技术人,看不大懂,这么简单粗暴的赚钱方式。甚至有些气馁,区块链这个行业,充斥着这么多“骗人”的把戏,还能好好的做技术吗?

    05 区块链有技术吗? 区块链当然有技术,而且区块链是个复杂的交叉学科。先不谈,区块链的人文,社会,经济方面的技术,我不太专业。就纯粹从计算机技术来看,区块链的技术也非常的庞杂和专业。

    先从编程语言开始。2018 年,go 语言在区块链流行,几乎大点的公链都是用 go 进行开发,确实简洁好用,网络处理,命令行处理,都有非常丰富的库。2019 年,rust 语言慢慢流行起来。Facebook 的 libra 项目全部采用 rust 语言开发。零知识证明的一些库也是由 rust 语言开发。Rust 语言类型预先定义,避免安全隐患;数组定长,防止溢出攻击。Rust 语言有个新的概念,所有权( Ownership )的内存管理方式。内存的所有权管理方式,能让编译器在编译的时候检查。所有权是管理堆上数据。通过所有权的设计,Rust 在编译的时候,能检查和避免 数据竞争情况(多个地址访问同一数据,数据写入的时候必须有效等等)。区块链开发,经常在多种开发语言之间切换:go,rust,C++,python。有的时候,代码开发有点恍惚:变量类型的定义在变量的前面还是后面?表达式后面需不需要分号?表达式后面是否要加冒号?

    数据结构,区块链中有两个比较重要的数据结构:Merkle 树和 DAG 结构。Merkle 树,通过叶子节点两两计算 hash 结果,生成上一层的节点,直至树根。Merkle 树数据结构,有很明显的好处,叶子节点的任何改动,都会改动树根。Merkle 树还有个优点,在给定某个 Merkle path,能证明某个叶子节点确实在以某个树根的 merkle 树上。Merkle 树,也有很多变种。以太坊管理账户信息(世界状态),使用的是 MPT 树。MPT 树通过增加或者合并节点,优化了 Merkle 树的深度。Merkle 树一般是两叉树,其实还可以扩展为多叉树。

    DAG,有向无环图。传统的区块链(比如,比特币,以太坊),使用的单序的区块链接方式,也就是后一个区块依赖前一个区块。这种传统的区块链组织方式,限制了交易的性能( TPS )。为了提高 TPS,DAG 是一种新的区块组织的方式。如何在 DAG 的区块结构方式下,确定区块 /交易的顺序,有很多相关的研究和算法。

    虚拟机和智能合约,虚拟机是在区块链上安全执行“程序”的环境。智能合约,就是在虚拟机中执行的程序。不同的公链提供了不同类型的虚拟机,比如以太坊的 EVM,星云链的 JVM,EOS 的基于 WASM 的虚拟机等等。不同的虚拟机有不同的编程规范。

    共识算法,共识算法让数据在一定的网络环境下达成共识。最传统的是 BFT/PBFT 共识算法,基于投票以及少数服从多数的原则,只要超过 2/3 的节点签名的数据就是达成共识的数据。PBFT 共识算法,需要有几个阶段,每个阶段都需要收集超过 2/3 的节点签名。这种方式,安全可靠,不会有区块分叉,但是效率比较低。PBFT 共识算法的复杂度是 O ( N^2 )。为了提高共识算法的性能,提出了其他很多基于 BFT 思想的共识算法,比如 HoneyBadgerBFT 算法,LBFT 算法。Algorand 也是 PBFT 算法中的一种变种,先随机抽取节点,然后让这些抽取的节点用 PBFT 算法形成共识。POS/DPOS 共识算法,采用和 PBFT 算法完全不一样的共识原理。POS/DPOS 共识算法,采用谁抵押多,谁出块概率高的思想,简单粗暴。抵押越多,贡献越大,也有相应的出块奖励。

    加密算法,区块链中的加密算法比较多。椭圆曲线加密,各种签名算法( BLS,盲签,环签等等)。

    零知识证明,零知识证明的理论基础就更多了:椭圆曲线,大数计算,群论,同态加密,配对函数,零知识证明的各种算法( zkSNARK,zkSTARK,BulletProof 等等)。零知识证明的理论可以追溯到 1985 年。目前有两个方向的应用:隐私和数据压缩。Zcash 就是利用零知识证明实现交易隐私,交易的双方信息以及交易金额只有交易双方可知。Loopring 的去中心化交易协议 3.0,就是利用零知识证明实现了链下计算,链上验证的思想。Filecoin 利用零知识证明实现”数据的压缩“,用户存储的数据(数据量很大)不需要直接上链,只需要将数据证明(数据量比较小,几百个字节)存储在链上。在零知识证明技术之前,区块链世界是区块链世界,现实世界是现实世界。零知识证明的技术,提供了一种方式,将现实世界,部分映射到了区块链世界。

    很多人问我,为什么坚持做区块链技术,因为我对区块链技术感兴趣。仅此而已。

    欢迎关注我的技术公众号:星想法。

    glenChen
        1
    glenChen  
       2023-10-12 15:10:41 +08:00
    大佬也逛 v 站啊,关注了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     6072 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 03:09 PVG 11:09 LAX 20:09 JFK 23:09
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86