请选择 进入手机版 | 继续访问电脑版
查看: 496|回复: 0

[综合] 区块链扫盲手册,智能合约真的“智能”吗?

[复制链接]

25

主题

68

帖子

403

积分

登堂入室

Rank: 3Rank: 3

积分
403
发表于 2018-4-8 23:05:59 | 显示全部楼层 |阅读模式
本帖最后由 老贝 于 2018-4-8 23:07 编辑

智能合约被认为是使用区块链技术的又一个热门技术,经常在相关领域被提及的一个概念,最著名的就属Ethereum了吧,但其实很多初入区块链的人并不了解智能合约,智能合约其实并不是特别智能,也不是严格意义上的合约。今天就来为大家整理一下,什么是智能合约?

智能合约是什么


从用户角度来讲,智能合约通常被认为是一个自动担保账户,例如,当特定的条件满足时,程序就会释放和转移资金。

从技术角度来讲,智能合约被认为是网络服务器,只是这些服务器并不是使用IP地址架设在互联网上,而是架设在区块链上。从而可以在其上面运行特定的合约程序。

但是与网络服务器不同的是,所有人都可以看到智能合约,因为这些智能合约的代码和状态都在区块链上(假设区块链是公开的)。而且,与网络服务器不同的是,智能合约不依赖某个特定的硬件设备,事实上,智能合约的代码由所有参与挖矿的设备来执行(这也意味着进入单个合约的算力是有限的,尽管挖矿难度的自动调整会调节这种影响)。

智能合约是编程在区块链上的汇编语言。通常人们不会自己写字节码,但是会从更高级的语言来编译它,例如用Solidity,与Javascript类似的专用语言。这些字节码确实给区块链的功能性提供了指引,因此代码可以很容易与它进行交互,例如转移密码学货币和记录事件。

代码的执行是自动的:要么成功执行,或者所有的状态变化都撤消(包括从当前失败的合约中已经送或接收的信息。)这是很重要的,因为它避免了合约部分执行的情况(例如,在证券购买交易中,证券所有者已经转移发送了证券,但是密码学货币的支付转移却失败了)。在区块链环境中,这尤为重要,因为没有办法来撤消执行错误所带来的不好的后果(而且如果对手不配合的话,根本就没有办法逆转交易)。

智能合约的使用案例

  • 证券登记和清算


合约状态包含了证券所有权的信息。如果登记的证券所有者注意到该合约中证券已经出售给了其他的参与者,其他参与者就会把密码学货币发送到担保账户,然后证券登记信息就会更新,货币就会转发给原来的证券持有者。取决于哪个信息先到达,证券或货币都会保管在一个担保账户中以避免双重使用,当交易取消或过时后,担保也将取消。

  • 银行现有账户


区块链本身已经使用了密码学货币账户,因此这里不需要智能合约。然而,现实生活中的人们想说欧元或美元账户,与上面所讲到的证券登记账户类似。使用合约会存在合约对手风险,正如在现实世界中的任何银行一样。这种风险可以通过对手风险监管来转移,或者通过担保来消除这种风险。
游客,如果您要查看本帖隐藏内容请回复


智能合约面临的问题


智能合约目前还处在初级阶段,尚未有任何实质进展。关键问题是信任度的问题,这与影响区块链实施的问题类似:这些系统都设计成了无需信任的环境,这意味着无法改正出现的错误。例如,在区块链中,如果你将货币发送给某个地址,这个操作是无法撤销的。因此,如果你与欺诈者进行交易,或者你已经将货币发送到错误的地址中,那么金钱损失是无法挽回的。

智能合约能够转移欺诈对手的问题 ,事实上,这就是智能合约设计的原因之一:无论何时,合约都能能够可靠地监控合约中参与方的执行情况,参与方是无法进行欺骗的。

然而,问题并没有解决,只不过是出现在了新的层级:例如,合约可能有漏洞,能够转移证券,但却无法转移货币。

在现实生活中,这些事情可以通过中心化的系统来撤消。但是如果是去中心化的系统,则只能自己承担风险。

同样地,也有欺诈的问题:某人需要设计(编程)合约,在合约设计时就会需要确保没有欺诈的问题。至少参与者要确保:

高层级(例如Solidity)的代码中需要充分描述合约参与方的目的;
代码中的字节码实际上相当于高层级的代码,需要在进入合约之前进行审核;
合约信息需要很好地理解,以避免出现乌龙指操作(例如,人们用错误的报价方式-例如USD/ERU而不是EUR/USD-这会导致严重损失。

总之,智能合约还远未完善,这将是一个漫长的过程。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
论坛测试中,即将上线,敬请期待……
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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