区块链技术的最初迭代在某种程度上可与网站第一次进化相媲美。通过这项技术,你可以做一些新颖的、令人印象深刻的产品,但其基本功能严重受限。然而,当区块链技术得到改进时,新的可能性出现了,区块链技术的第二次迭代可以与在网页中引入Javascript相媲美。现在,开发人员可以构建更丰富、更动态的应用程序,从而给用户带来更好体验。
区块链1.0和区块链2.0之间的主要区别是,如今区块链是可编程的。这意味着它们可以做的远不止简单地记录交易。实际上,现在开发人员可以在区块链上构建动态的应用程序,并且可以与数据交互,以呈现不同的结果。
pragma solidity ^0.4.0; contract SimpleStorage { uint storedData; function set(uint x) public { storedData = x; } function get() public view returns (uint) { return storedData; } }
智能合约就是一种把我们生活中的合约数字化,当满足一定条件后,可以由程序自动执行的技术。就好比你跟我做了一个约定,我们定好奖惩措施,然后将约定通过代码的形式录入区块链中,一旦触发约定的条件,就会有程序来自动执行,这就是智能合约。
因此,智能合约使参与协议的各方能够直接相互协商而不依赖第三方。
智能合约的优势:
控制:在确认(或拒绝批准)合约履行的分布式系统中,多方不断地检查、重新检查和更新块条目,而其他缔约方拒绝任何不符合规定规则的履行。
安全:遵循合约逻辑,然后在所有区块链节点上同时运行程序。所有相关方都可以比较结果。只有在双方同意合约条款后,这些相关方才修改自己的区块版本。然后在整个网络中复制该块。
透明度和灵活性:任何区块链用户都可以评估合约逻辑和底层机制。它们中的每一个都可以验证和运行相同的代码。用户不能访问单独的合约,合约的所有细节只能由合约双方看到。如果其他用户接受合约条款和合约逻辑,那么简单地说,他们中的任何一个都可以为了自己的目的再次复制、修改和执行合约
function f(uint a) private returns(uint b) {return a +1; } function setData(uint a) public { data = a; } function getData() public returns(uint) { return data; } function compute(uint a , uint b) internal returns (uint) { return a+b; ) } contract D { function readData() public { C c = new C(); uint local = c.f(7); // 错误 成员f 是不可见的 c.setData(3); local = c.getData(); local = c.compute(3,5); // 错误,成员 compute 是不可见的 } }