大家好啊,我是豆小匠。
通过前面几期,我们知道区块链是一种非中心化的解决方案,没有“中央处理器”。
那么,区块链中的各种操作,比如转账、状态记录等规则是怎么定义,又是怎么起作用的呢?
本期主角 – “智能合约”(也叫智能合同)
1、智能合约是什么
区块链是一种分布式数据库,但是光有数据是不够的,我们还需要区块链自带数据的流转规则。
智能合约就是这个流转的规则, 它们可以表示各个参与方之间的协议。
智能合约的所有条款和条件都以编程方式定义。 定义将为区块链的参与者指定规则、要求和奖励。 它还会指定如何在各参与方之间传输数字资产。
因此从本质上讲,智能合约是一段程序,存储在区块链中,不可更改(但是可以升级合约)。
智能合约将自行运行,发送事件来触发状态转换,并调用函数。 它们非常适用于区块链技术,因为素不相识的人们可以通过它们按照指定的安全方式开展业务,而不需要任何中间商。
2、简单的智能合约示例
以以太坊(Ethereum)为例,它是全球首个可编程的区块链。可以通过它来定义智能合约,使用的语言是Solidity。
这里我们浅尝辄止,大概看下智能合约的组成部分:
pragma solidity >0.7.0 <0.8.0;
contract Marketplace {
address public seller;
address public buyer;
mapping (address => uint) public balances;
event ListItem(address seller, uint price);
event PurchasedItem(address seller, address buyer, uint price);
enum StateType {
ItemAvailable,
ItemPurchased
}
StateType public State;
constructor() public {
seller = msg.sender;
State = StateType.ItemAvailable;
}
function buy(address seller, address buyer, uint price) public payable {
require(price <= balances[buyer], "Insufficient balance");
State = StateType.ItemPurchased;
balances[buyer] -= price;
balances[seller] += price;
emit PurchasedItem(seller, buyer, msg.value);
}
}
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
评论记录:
回复评论: