在这篇文章中,我打算和Ethereum(以太坊)谈谈Smart Contract(智能合同)另外,我们来介绍一下Ethereum上的Dapp是怎样的架构。 Ehterum创办人Vitalik Buterin活跃在早期的Bitcoin社区,甚至创办了《比特币杂志》(Bitcoin Magazine)Vitalik Buterin发现Blockchain技术适合运行Dapp,2013年发布的Ethereum白皮书《AdNext-Generation Smart Contract and Decentralized Application Platform》。2014年Gavin Wood推出Ethereum黄皮书《ETHEREUM:A SECURE DECENTRALISED GENERALISED TRANSACTION LEDGER》。Ethereum的蓝图经过前线(Frontier)、主场(Homestead)、大都会(Metropolis)和Serenity四个阶段。2017年10月正式进入大都会阶段。 What is Ethereum Ethereum在网络上的解释众说纷纭。我想用Ethereum创始人Vitalik Buterin的话来介绍Ethereum,Vitalik Buterin说 ”Ethereum is a platform that is specifically designed for people to build these kinds of decentralized applications” 。 Ethereum的目的是利用Blockchain技术,让每个人都能在这个平台上构建自己的非中心化应用Dapp。 Bitcoin和Ethereum最大的区别是,Bitcoin的block只存储交易数据。在Ethereum设计中,除了交易数据之外,还可以存储程序代码。Ethereum除了存储功能之外,还添加了运算能力。使用特定的程序语言记述程序代码,编译程序代码,转换为bytecode并存储在block中。 将编译的bytecode保存到block Ethereum的图灵完整性 Ethereum提供一种非中心化虚拟机来运行称为“EVM”的bytecode。EVM存在于每个Ehterum节点,负责执行存储在block中的bytecode。EVM具有Truing Completeness(Truing Completeness)的特性。图灵完善是机器描述所有可计算的问题(Computational Problem),无论时间长短都可以计算结果。可计算的问题是一个数学问题,它给出一个正整数n来确定是否是素数。该机具有无限的存储空间、可增减的运算能力、条件判断(if-else)和重复(loop)能力。EVM具有上述能力,因此EVM是一台令牌完备的机器。 每个Ethereum节点都运行EVM 你可以把Ethereum想象成一台超级计算机。从理论上讲,Ethereum具有无限大的存储空间(storage space)、无限大的运算能力(compute capability)我们可以编写我们自己需要的程序并在这台超级计算机上运行。这台超级计算机是由Blockchain技术构建的,上面放的所有资料都很难被篡改。由于脱离中心化的结构,没有人能够控制这台计算机。Ethereum基于Blockchain技术构建,是一个轻松运行Dapp的脱中心开发平台。 什么是Smart Contract Samrt Contract这一概念首次出现是在1994年由一位名叫Nick Szabo的学者提出的。原文如下所述。 ”A smart contract is a computerized transaction protocol that executes the terms of a contract” 字面翻译是智能合同,是执行合同条款的计算机交易协议。我完全不知道你是不是觉得超抽象,你在说什么。最好说明Smart Contract的例子是自动售货机。当你把硬币投入自动售货机时,自动售货机会提供我们选择的商品。这个动作可以看作是与商品制造商签订合同下的交易行为。合同是关于双方达成协议的一系列规则。在自动售货机的例子中,这里的合同是我们给予足够价值的硬币,以获得选择的商品。负责实现这个合同的是自动贩卖机。制造商制定了规则(买卖合同)放入自动售货机。当满足特定条件时(当收到足够数量的硬币时),自动售货机根据规则执行相应的操作(提供所选择的商品)这就是Smart Contract的概念。 Smart Contract主要设计的目的是 满足一般条款和条件 将恶意损失和意外例外降至最低 减少可信中介的需求 降低仲裁和执行成本以及其他事务处理成本 自动售货机模型是Smart Contract的概念 Smart Contract on Blockchain 想想如果黑客侵入自动贩卖机会怎么样。如果厂家恶意直接更改自动售货机的规则,只收你的钱不给货呢?这些问题随着Blockchain的出现,似乎找到了答案。Blockchain本身就有不能篡改数据的特点,黑客无法攻击放置在Blockchain上的资料。去中心化的能力是没有东西可以控制已经运行的程序。Vitalik发现Blockchain的特性可以从根本上解决Smart Contract的问题,Ethereum就这样诞生了。 Smart Contract部署在Blockchain上,根据Blockchain的特性大幅增加Smart Contract安全性 Smart Contract on Ethereum Ethereum的Smart Contract是对EVM执行的程序代码,是存储在block中的bytecode。当Ethereum Smart Contract运行时,当前状态(status)与用户下达的指令会产生不同的结果。以自动售货机为例,没放钱时自动售货机余额为0元状态,掉10元余额为10元状态,掉10元余额为20元状态。每个Smart Contract的用途不同,设计也不同,定义的交互界面也不同。这些接口称为ABI(应用程序Binary Interface) 我们写smart contract程序代码,编译后可以得到两个东西。一个是编译得到的bytecode,另一个是json格式的ABI文件。如果你想在Ethereum blockchain上配置smart contract,你就得把刚创造出来的ABI作为外壳,把bytecode放入data,然后扔到Ethereum Blockchain Network里等着矿工(miner)把contract写进block。部署contract后,会自动生成帐户并返回该帐户的address。这是俗称的合同帐户。我们通过合同账户address与smart contract互动。 Smart Contract分发完成后,使用合同帐户与Smart Contract进行交互。 当命令contract时,矿工(miner)会根据命令中的address向blockchain查询相应的contract状态(status)根据contract的当前状态和指令进行运算。最后,将演算后的状态(status)写回矿工创建的block。如果此块被其他Ethereum节点接受,则其他节点也将更新contract状态。由于Blockchain本身同步所有数据,因此每个节点捕获的contract状态相同。 Dapp on Ethereum and Smart Contract 最后,比较当前Web应用程序体系结构与使用Ethereum构建的Dapp体系结构之间的差异。下图显示了传统的Web应用程序体系结构。 Web Application Traditional Architecture 从服务器向用户提供利用HTML/CSS/JavaScript的UI接口,服务器接受用户的请求进行计算,将计算后的结果保存到后端的数据库中。图中的服务器和数据库可以是设置在本地端的机房,也可以设置在亚马逊S3、亚马逊EC2等云服务中。 Ethereum Dapp Architecture 在Ethereum Dapp Architecture中,主要的逻辑运算由Ethereum Smart Contract负责。资料存储在Ethereum Blockchain Network中。服务器的角色主要是从blockchain获取信息并向用户呈现,大多数复杂的运算都被Smart Contract所取代。用户可以利用自己的Ether Wallet进行Send Transaction,与Smart Contract进行交互。 Smart Contract Example 让我们以一个简单的例子来看看Smart Contract扮演什么角色。假设鲍勃想卖车,而凯文想买车,整个流程如下:。 鲍勃利用他的账号在Smart Contract上注册了汽车销售信息。 鲍勃把自己的车和车钥匙放在了由Smart Contract锁定的车库里。 Kevin看中了鲍勃的车,给Smart Contract的账号打了足够的钱。 Smart Contract检查汽车是否存在,Kevin是否在账户上旋转了足够的Ether。 当条件成立时,Smart Contract将钱Ether到鲍勃的账户,让Kevin的prviate key可以打开车库锁。 凯文利用自己的private key打开车库的钥匙,拿到了车和车的钥匙。 使用Smart Contract简化购物车交易流程 这篇文章主要介绍了Ehtereum和Smart Contract,还提到了为什么Ethereum更适合作为Dapp的开发平台。现在Ethereum有很多问题需要解决,但是Smart Contract也不太成熟。这需要开发人员和用户共同努力,才能践行未来Dapp的美好愿景。希望通过这篇文章对Ethereum和Smart Contract有一点了解。以上是我对Ethereum和Smart Contract的理解。如果观念和理解上有错误,希望大家也不要太吝啬地改正。 郑重声明:本文版权归原作者所有,转载文章如作者信息标记有误,请先联系我们修改或删除,谢谢。
© 版权声明
免责声明:以上内容(如有图片或视频亦包括在内)均为平台用户上传并发布,本平台仅提供信息存储服务,对本页面内容所引致的错误、不确或遗漏,概不负任何法律责任,相关信息仅供参考。
本站尊重他人的知识产权、名誉权等法律法规所规定的合法权益!如网页中刊载的文章或图片涉及侵权,请提供相关的权利证明和身份证明发送邮件到qklwk88@163.com,本站相关工作人员将会进行核查处理回复
THE END
喜欢就支持一下吧






