v18038319724的个人空间 https://www.eechina.com/space-uid-170931.html [收藏] [复制] [RSS]

博客

NFT链游质押生息系统开发(模式)|分析方案

已有 256 次阅读2023-4-20 17:31

智能合约的基本原理是把传统合同的条款编制成【180链上合约-3831开发系统9724】一套计算机代码,在买卖各方签署后自动运行。区块链上的智能合约是把前述计算机代码部署到公链上,使其在公链上自动运行。智能合约的签署和执行过程中的每一步都形成一个区块,并根据分布式记账原理被记录于链上每个节点


 在Solidity中,一个合约由一组代码(合约的函数)和数据(合约的状态)组成。合约位于以太坊区块链上的一个特殊地址。*uint storedData*;这行代码声明了一个状态变量,变量名为storedData,类型为uint256bits无符号整数)。你可以认为它就像数据库里面的一个存储单元,跟管理数据库一样,可以通过调用函数查询和修改它。在以太坊中,通常只有合约的拥有者才能这样做。在这个例子中,函数setget分别用于修改和查询变量的值。

 跟很多其他语言一样,访问状态变量时,不需要在前面增加this.这样的前缀。

 这个合约还无法做很多事情(受限于以太坊的基础设施),仅仅是允许任何人储存一个数字。而且世界上任何一个人都可以来存取这个数字,缺少一个(可靠的)方式来保护你发布的数字。任何人都可以调用set方法设置一个不同的数字覆盖你发布的数字。但是你的数字将会留存在区块链的历史上。稍后我们会学习如何增加一个存取限制,使得只有你才能修改这个数字。

contract Coin {
//关键字“public”使变量能从合约外部访问。
   address public minter;
   mapping (address => uint) public balances;

//事件让轻客户端能高效的对变化做出反应。
   event Sent(address from, address to, uint amount);

//这个构造函数的代码仅仅只在合约创建的时候被运行。
   function Coin() {
       minter = msg.sender;
   }
   function mint(address receiver, uint amount) {
       if (msg.sender != minter) return;
       balances[receiver] += amount;
   }
   function send(address receiver, uint amount) {
       if (balances[msg.sender] < amount) return;
       balances[msg.sender] -= amount;
       balances[receiver] += amount;
       Sent(msg.sender, receiver, amount);
   }
}

 


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
返回顶部