智能合约功能强大,因而真实世界中的复杂商业逻辑和应用可以在区块链上轻松实现。然而,智能合约一旦部署,它会在所有区块链节点上独立重复运行,因此原则上认为,只有各业务方需要进行共识的、逻辑可复用的业务才有必要通过智能合约在链上实现。此外,智能合约发布之后,若出现问题需要修复或者业务逻辑变更,是无法通过简单地在原有合约基础上修改再重新发布来解决的。
WeIdentity使用基于Solidity的智能合约进行开发。Solidity的智能合约语义上是图灵完备的,该语言支持各种基础类型(Booleans,Integers,Address,Bytes,Enum等)、复杂类型(Struct,Mapping,Array等)、复杂的表达式、控制结构和远程调用,以及接口、继承等面向对象的高级语言特性。Solidity是以太坊和FISCO-BCOS所支持的智能合约语言。
区块链的去中心化,数据的防篡改,决定了智能合约更加适合于在区块链上来实现。因此区块链技术的发展,让智能合约拥有了更广阔的发展前景。
智能合约事实上是由计算机代码构成的一段程序,其缔结过程是:
第一步,参与缔约的双方或多方用户商定后将共同合意制定成一份智能合约;
第二步,该智能合约通过区块链网络向全球各个区块链的支点广播并存储;
第三步,构建成功的智能合约等待条件达成后自动执行合约内容。
智能合约是去中心化的,没有集中式的中控制机构。它是由分布在网络中的多个节点共同维护和管理的,因此,它是一个非常透明、公平和民主的系统。
总体来说,智能合约是一种基于区块链技术的代码执行程序,可以对数字资产进行自动化管理和交换。它使用Solidity语言编写,并通过区块链平台实现。智能合约与外部世界进行通信,并记录特定的时间和数据,具有自动化执行、不可篡改、去中心化等特点。
event Sent(address from,address to,uint amount);这行声明了一个所谓的“事件(event)”,它会在send函数的最后一行被发出。用户界面(当然也包括服器应用程序)可以听区块链上正在发送的事件,而不会花费太多成本。一旦它被发出,听该事件的listener都将收到通知。而所有的事件都包含了from,to和amount三个参数,可方便追踪事务。为了听这个事件