请选择 进入手机版 | 继续访问电脑版
开启辅助访问
链路首页链路财经目前收录 币种 : 4908 交易所 : 310钱包 : 17 24H 交易量 : $27,524,900,435 总市值 : $281,556,718,423
2019
09/10
19:10
分享
评论


  • 点击蓝字,轻松关注

    公众号回复“1”,拉你进区块链技术讨论微信群

    作者:focinfi

    来自:掘金

    链接:https://juejin.im/post/5d6f188fe51d453c2577b7e2

    本文约2800+字数,阅读预计需17分钟

    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


    备忘-以太坊技术概况

    最近看了些以太坊的论文、书籍和代码,做个小小的总结。

    任何技术的演进都是和其要解决的问题相辅相成的,深刻理解需求才能把握其设计理念和发展脉络。

    那么,以太坊是为何而生呢?简单地说是在比特币作为一种去中心化的加密货币出现后,除了进行转账交易,大家希望利把比特币背后的区块链技术应用到更多更复杂的领域,比如去中心化域名系统、存储系统、拍卖系统等,一些人尝试在比特币代码的基础上做修改,但是成本很高,又很容易破坏比特币原有的安全设计,为了解决这些需求,一个叫 Vitalik Buterin 的年轻人写了一篇名为以太坊白皮书,一群技术人员开始设计和实现以太坊区块链。

    有了明确的需求,接下来是模型抽象,在以太坊白皮书中指出,以太坊各节点各自平等地传递匿名消息,共同维护一个状态集合。首先是站在巨人的肩膀上,用区块链的非对称加密提供一定程度的匿名性,用共识协议和经济激励在保证安全的基础上刺激矿工推动生态健康发展;其次是抽象出更通用的状态集合和状态转换机制,在以太坊里的状态可以分为通货状态和自定义状态,即账户-以太币和账户-自定义数据,在自定义数据里面,分为上链后不可修改的程序数据和可由程序运行后修改的数值数据,在以太坊里,这个说的程序被称作智能合约,只能由消息触发运行,可以是普通用户发起的交易消息,也可以是被其他智能合约调用的消息,以太坊给智能合约提供了图灵完备的运行环境,其表达能力就会比比特币要强很多。不过,当用技术解决了一个问题时,总是会出现新的问题:以计算为中心的智能合约在去中心化的架构上难以提高TPS;一次交费永久保存的状态数据无法无法持续激励矿工,生态难以维持健康发展。以太坊2.0的演变正是要解决这些问题。

    接下来我们展开讲讲。

    首先说说状态,在以太坊里采用 MPT(Merkle Patricia Tree) 数据结构存储状态和事件(交易),每个账户会记录余额、程序和自定义数据,每个账户都有独一无二的地址,程序和自定义数据都会用其哈希摘要作为存储ID,在数据库中以键值对的形式存储。接着问题来了,这个每个账户的状态由谁来负责维护呢,谁来写谁来读谁来存储呢?

    我们在使用支付宝或者网盘软件的时候,数据存在他们的服务器上,我们所有的操作都通过他们的服务器处理。在以太坊的世界里,每个参与节点都是平等的,不存在中心节点,所以每个节点都可以存一份整体状态记录,即每个参与节点都可以看到其他节点的状态值,这听起来好像不太好,毕竟个人的账户余额是很私密的,那么如何让保护个人隐私呢?

    在以太坊网络里,参与节点将转账、余额查询这些操作消息广播给附近的节点,收到消息的节点验证没有问题后再将该消息扩散给其他节点,直至整个网络都知道了这个消息,更新了他们自己本机的那份状态记录,这里涉及到两个问题,如何保证只有你才能将你的钱转给给别人和如何保证你的消息在传递的过程中没有被篡改,这里采用非对称加密算法,即每个参与者用私钥加密自己的操作信息和其哈希摘要,用公钥生成账户地址,这样每个接受信息的节点都会用公钥反解你加密后的操作信息和摘要,用摘要来验证操作信息没有被篡改,由于大家假设你的私钥是你私有保存的,所以只有你能进行加密操作,从而保证了只有你才能动你的钱,且由于公钥都是随机生成的,所以在可以很一定程度上保证账户的匿名性。聊到这里,我们会想,如果我们用支付宝,他们会收各种手续费(发广告),他们有利可图所以会帮我们管理资金还要承担资产安全责任,那么在以太坊的网络里,大家都是平等节点,不会发什么广告,也不能随便收手续费,自然无利可图,没有利益,不会有节点愿意参与进来,费电费机器地处理其他节点的消息,况且没有中间节点,任何一个节点都有可能出现作恶或者软硬件故障,要推动大家都积极且诚信地参与进来,需要合理的奖惩机制。

    正所谓 “天下熙熙皆为利来,天下攘攘皆为利往”,基于所有节点都只为自己的利益着想的假设,要推动所有参与节点积极且诚信地处理其他节点的操作消息,我们需要建立一种机制使得作恶的代价足够大,远比诚信的收益大,或者说诚信的收益足够大,大到不值得去作恶。首先,每一个参与处理其他节点操作消息的节点都可以在打包一个区块,有机会获得一笔资金奖励,由于可以自由选择要打包的操作消息,所以可以不打包那些想吃白食的即不付手续费的操作消息,这样一来发消息的节点就会按照市场价给点手续费,刺激一些节点积极参与处理操作消息即打包区块,修改状态记录。现在参与的积极性是有了,那么诚信如何保证呢,简单说就是让作恶的代价非常大,由于区块链每个新区块都要将前一个区块的摘要信息包含进去,所以只要控制好每个区块打包的难度,要想修改前面某个区块的内容,后面每个区块都得重新再算一次,且难度呈指数级上升,有人可能就问了,我要改了老的区块,后面的不要了不就好了,不行,在区块链的世界里,长度代表了付出的代价最多,所以大家只认可最长的那条链。由于修改某个区块无非就是把自己花钱记录给删了,并不能把别人的钱转到自己账户里,所以作恶的收益有限,但代价(算力)却是很大的,所以这个制度基本达到了我们的需求。

    智能合约可以说是以太坊最大的创新,程序有史以来有了“独立”的地位,可以公开透明的执行,图灵完备的平台提供了足够的灵活性却也埋下了隐患,图灵本人早已证明一个程序无法确定是否在有限步骤执行完,所以一个节点在执行智能合约前是无法识别恶意智能合约的,所以以太坊平台提供了精细的计算计费标准,在执行智能合约之前要保证账户有一定的余额,执行完成后计算费用会奖励给矿工,如果在执行过程中,费用已到达一个阈值(发送交易的账户设定),却还没执行完,则扣除这些费用,且将只能合约执行的内容回滚。设计计算资源的计费模式给区块链技术发展在抽象计算的方向上提供了非常有价值的理论和实践经验。

    每个参与者在以太坊这个生态里都“有利可图”,共推动生态发展,当账户量越来越多,上文提到的 TPS 过低和状态维护成本的问题日益显著,以太坊2.0的规划提出了分片和 PoS 等技术,分片采用分而治之的思路想要提高智能合约的运行的并发度,而 PoS 即 Prof of Stake 是要代替现有的 PoW 旨在降低能源消耗,提高共识效率进一步提高 TPS。对于状态维护成本的问题目前社区还没有达成一致意见,有人提出对自定义数据存储收取租金,余额被扣完后数据使用权被冻结,余额充足后使用权会被解冻。这种方式类似于当今世界架构下的资产税,给经济调整提供灵活性,但对于以太坊平台,实施起来比资产税更难。

    总结一下,以太坊作为一流区块链技术的技术试验地,让我们看到公链在发展的路上艰难跋涉,技术和人性就像冒险家的两只脚,只有不断探索更好的配合方式,才能走的更远。


    文章发布只为分享区块链技术内容,版权归原作者所有,观点仅代表作者本人,绝不代表区块链兄弟赞同其观点或证实其描述。

    猜猜你喜欢


主题帖 759 关注 0 粉丝 2
情感指数

链路大数据分析置信度 73.89 %

TA的主题帖
主题相关
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表