一、简单代币合约
pragma solidity > 0.4.22;
contract Coin{ //这里我们定义了一个address 作为key, uint做为value的hashTable balances; 我们还定义 了一个address的变量minter; address public minter; mapping(address=>uint) balances; event Sent(address from, address to, uint amount); constructor(){ //代表创建这个合约的账户地址,被赋值给变量minter. minter = msg.sender; }//添加一个挖矿合约 function mint(address receiver, uint amount) public{ require(msg.sender == minter); balances[receiver] += amount; }function send(address receiver, uint amount) public{ require(balances[msg.sender] >= amount); balances[msg.sender] -= amount; balances[receiver] += amount; emit Sent(msg.sender,receiver,amount); } }
解析:
上面实现一个简单的加密货币,币在这里可以无中生有,但只有创建合约的人才能做到,且任何人都可以给他人转币,无需注册名和密码。
address 类型是一个160位的值,不允许任何算数操作,这种类型适合存储合约地址或外部人员。
mappings 可看作是一个哈希表,它会执行虚拟初始化,以使得所有可能存在的键都映射到一个字节表示为全零的值。
event Sent(address from, address to, uint amount) ;声明了一个所谓的事件,它在send函数最后一行被发出。用户界面可以监听区块链上正在发送的事件,且不会花费太多成本,一旦它被发出,监听该事件的listener都将收到通知,而所有的事件都包含了 from , t o和 amoun t三个参数,可方便追踪事务。
msg.sender 始终是当前函数或者外部函数调用的来源地址。
最后真正被用户和其他合约所调用的,用于完成本合约功能的方法是 mint 和 send 。若 mint 被合约创建者外的其他调用则说明都不会发生。
二、水龙头合约
水龙头账户是一个合约账户,水龙头就是一份合约,而整个网站就
是合约+前端组成的DApp。下面我们通过 Remix 来编写一个简单的水龙头合约,借此了解如何创建、部署合约以及一些 Solidity 的基本语法。
首先打开 Remix,并新建一个名为 faucet.sol 的文件,该文件就是 Solidity 的源文件.
打开 faucet.sol,并写入如下代码:
pragma solidity ^0.7.0; contract faucet { function withdra
本文发布于:2024-01-28 04:50:34,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17063886374908.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |