区块链是一个全球共享的事务性数据库。这意味着,每一个人都可以加入这个网络来读取数据库中的数据,如果你想改变其中的一些数据,你必须要创建一个被其他所有人接受的事务。事务这个词,意味着你要做的操作(假设你想要同时改变两个值)要么全完成,要么全不完成。另外,当你的事务完成后,没有其他事务可以改变它。
bytes public byy=new bytes(2); function initbyy(){ //动态的可以用下标赋值 byy[0]=0x01; byy[1]=0xfd; } function changelength(){ byy.length=5;//往后补0扩充位数 byy.push(0x99);//在最后加入,0x01fd00000099 }
而区块链的出现,则让上述这两个问题有了答案。区块链具有信息不可篡改,去中心化的性质,完全使得交易合约的条款可信度有了保证,然后比特币的成功又让人们看到了数字加密资产也完全具有可行性。
这两点突破以后,一种基于区块链的智能合约就浮出水面了。这也就是为什么区块链的概念起来以后,智能合约也闯进了我们的视野。
因为基于区块链技术的智能合约,不仅可以发挥智能合约在成本效率方面的优势,而且可以避免恶意行为对合约正常执行的干扰。将智能合约以数字化的形式写入区块链中,由区块链技术的特性保障存储、读取、执行,整个过程透明可跟踪、不可篡改。
pragma solidity ^0.4.0; contract AccessGetter{ uint public data =10; function f() returns (uint, uint){ data++; return (data, this.data()); } } contract SetVar{ function AddData(AccessGetter accessget){//调用同时编译的外部合约 accessget.f(); } }
区块链本质上是一个去中心化的分布式账本数据库,目的是解决交易信任问题。广义来看,区块链技术是利用块链式数据结构验证与存储数据、利用分布式节点共识算法生成和更新数据、利用密码学方式保证数据传输和访问的安全、利用自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。狭义来看,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。