智能合约全部由代码组成,而典型的合同则是一份有着法律意义的文本,这两者之间存在到底能否对应以及如何对应的问题。一方面,通过智能合约的订立和自动执行,完全有可能实现和传统合同一样的效果,因此理论上可以将代码“翻译”为法律文本,或者至少在一定程度上解读出双方合意。另一方面,智能合约无疑又缺乏很多传统文本所含有的要素,比如在匿名的环境中,签约主体的身份首先就不明确。代码能否“翻译”,可能是智能合约接受合同法规制的现实基础。
但是也只是在非常具体的情况下。可扩展性问题使得它并不能被广泛的应用。在区块链上唯一能用的智能合约是易于计算的合约,不需要太大的存储能力和带宽,而且不是经常执行。所以在实践中,它只适用于大型交易。在区块链上用智能合约来执行大量的小额交易在经济上是不可行的。如果你仍然希望扩大交易量,则需要在外部服务器上运行“智能脚本”,并定期向区块链进行结算。如果你使用外部数据的话,智能合约也会有风险。所以最好是在区块链上使用多重签名,并且在外部服务器上运行一段智能脚本。如果你不想用外部数据,那么你就仅限于持有链上的无形资产,这跟传统合约也没什么两样。
contract Greeter{
string private greeting;
constructor(string memory _greeting){
console.log("Deploying a Greeter with greeting:",_greeting);
greeting=_greeting;
}
function greet()public view returns(string memory){
return greeting;
}
function setGreeting(string memory _greeting)public{
console.log("Changing greeting from'%s'to'%s'",greeting,_greeting);
智能合约是具有高确定性、防篡改且可靠的数字化协议,在去中心化的区块链上运行。
智能合约相对标准化的传统合约有两大优势。
首先,智能合约中的记录是可信且可共享的。由于智能合约的内容非常安全,合约各方甚至无须备份,这将对现代企业带来很大价值,因为现代企业中通常存在多个部门,这些部门由于缺少单一可信的记录而导致工作流程产生冲突。
其次,智能合约具有高度确定性。传统合约有些时候由于错误或合约某一方不愿意履约而无法按约定执行。而智能合约所运行的环境决定其可以严格按照约定条款执行,而无须在每一个环节都进行审批。如果事先设定的条件被满足,合约中的关键参数将自动执行。