DAPP智能合约系统开发详细技术及方案项目

简介: 区块的作用就是将不同时间阶段内的交易数据按照一定的格式和数量,打包成结构化数据,方便存储和管理。

区块的作用就是将不同时间阶段内的交易数据按照一定的格式和数量,打包成结构化数据,方便存储和管理。

  区块头和区块体数据也会被当作输入数据做一次Hash运算,其运算结果会被存储在下一个区块的区块头中,这样任何区块内容的修改都会反映到区块的Hash值上,而区块的Hash值又是下一个区块的输入数据,它又会被当作新区块的数据参与一次新区块的Hash运算,随着时间的推移和交易量的增加,所有的区块会通过保存前一个区块的Hash运算结果的方式组成一条链。

string public name = 4FunCoin;

string public symbol = 4FC;

uint8 public decimals = 18; // 18 是建议的默认值

uint256 public totalSupply; // 发行量

// 建立映射 地址对应了 uint' 便是他的余额

mapping (address => uint256) public balanceOf;

// 地址对应余额

mapping (address => mapping (address => uint256)) public allowance;

// 事件,用来通知客户端Token交易发生

event Transfer(address indexed from, address indexed to, uint256 value);

// 事件,用来通知客户端代币被消耗(这里就不是转移, 是token用了就没了)

event Burn(address indexed from, uint256 value);

// 这里是构造函数, 实例创建时候执行

function TokenERC20(uint256 initialSupply, string tokenName, string tokenSymbol) public {

totalSupply = initialSupply 10 * uint256(decimals); // 这里确定了总发行量

balanceOf[msg.sender] = totalSupply; // 这里就比较重要, 这里相当于实现了, 把token 全部给合约的Creator

name = tokenName;

symbol = tokenSymbol;

}

// token的发送函数

function _transfer(address _from, address _to, uint _value) internal {

require(_to != 0x0); // 不是零地址

require(balanceOf[_from] >= _value); // 有足够的余额来发送

require(balanceOf[_to] + _value > balanceOf[_to]); // 这里也有意思, 不能发送负数的值(hhhh)

uint previousBalances = balanceOf[_from] + balanceOf[_to]; // 这个是为了校验, 避免过程出错, 总量不变对吧?

balanceOf[_from] -= _value; //发钱 不多说

balanceOf[_to] += _value;

Transfer(_from, _to, _value); // 这里触发了转账的事件 , 见上event

assert(balanceOf[_from] + balanceOf[_to] == previousBalances); // 判断总额是否一致, 避免过程出错

}

function transfer(address _to, uint256 _value) public {

_transfer(msg.sender, _to, _value); // 这里已经储存了 合约创建者的信息, 这个函数是只能被合约创建者使用

}

function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {

require(_value <= allowance[_from][msg.sender]); // 这句很重要, 地址对应的合约地址(也就是token余额)

allowance[_from][msg.sender] -= _value;

_transfer(_from, _to, _value);

return true;

}

function approve(address _spender, uint256 _value) public

returns (bool success) {

allowance[msg.sender][_spender] = _value; // 这里是可花费总量

return true;

}

function approveAndCall(address _spender, uint256 _value, bytes _extraData) public returns (bool success) {

tokenRecipient spender = tokenRecipient(_spender);

if (approve(_spender, _value)) {

spender.receiveApproval(msg.sender, _value, this, _extraData);

return true;

}

相关文章
DAPP合约系统开发逻辑技术丨DAPP成熟系统开发技术方案
动态调用允许调用者在运行时指定被调用合约及方法,无需预先知道接口。中断配置通常包括:启用外设中断、设置中断优先级分组和使能中断请求。NVIC_InitTypeDef结构体用于中断配置,包含中断源、抢占优先级、响应优先级和使能状态。中断源定义在IRQn_Type枚举中,如WWDG_IRQn、PVD_IRQn等。抢占优先级值依赖于优先级分组设定。
|
存储 安全 区块链
DAPP互助公排智能合约系统开发方案与需求
智能合约是需要区块链开发者用区块链编程语言写出来的一串代码,根据不同场景构思逻辑后开发出来的信任机制
|
存储 安全 算法
DAPP合约系统开发|DAPP去中心化模式系统开发(成熟技术)
透明度和灵活性:任何区块链用户都可以评估合约逻辑和底层机制
|
存储 算法 区块链
GRETT格莱特智能合约系统开发|格莱特质押模式系统开发DAPP技术搭建
“去中心化”是区块链的典型特征之一 The liquidity providers provide the pool with the two
|
JavaScript 前端开发 Go
区块链Dapp智能合约系统开发(开发功能)丨dapp/defi代币合约项目系统开发成熟案例版及源码部署
The following are important technical points in the development process of smart contract DApp:
|
JSON 前端开发 编译器
链上DAPP系统开发|DApp智能合约开发搭建技术
合约可以调用其他合约,只需知道地址和ABI,我们就可以在合约内部调用其他合约,需要注意的是,调用合约也是事务性操作,因此,你不需要通过手动管理异步操作的方式来等待返回结果。在合约内部调用其他合约需要消耗额外的Gas费用。
链上DAPP系统开发|DApp智能合约开发搭建技术
|
存储 算法 区块链
区块链DAPP智能合约项目系统开发讲解方案
区块链DAPP智能合约项目系统开发讲解方案
239 11
|
JSON 区块链 数据格式
Forsage/MetaForce佛萨奇2.0智能合约系统开发(详细案例),Forsage/MetaForce佛萨奇2.0智能合约开发成熟技术及源码
  数字经济是以数据资源为关键要素,以数字科技为支撑的经济形态。数字产业化和产业数字化是数字经济中的重点内容,数字产业化主要是推动数字科技形成规模化产业,
|
安全 区块链 数据安全/隐私保护
佛萨奇智能合约系统开发2.0搭建技术
能钱包可以实现账户恢复(Argent,MYKEY)、交易金额限制(Argent,Monolith)、批量交易合并(MYKEY多target)等多种特性,切实帮助用户解决问题
佛萨奇智能合约系统开发2.0搭建技术
|
存储 区块链
佛萨奇2.0马蹄莲智能合约开发原理丨MetaForce佛萨奇2.0马蹄莲智能合约DAPP系统开发成熟案例及源码部署
目前,DApp通常是指在以太坊或EOS上基于智能合约开发的相关应用。DAPP是Decentralized Application的缩写,即去中心化应用,也有人称为分布式应用。它被认为开启了区块链3.0时代。DAPP就是在底层区块链平台衍生的各种分布式应用,是区块链世界中的服务提供形式。
佛萨奇2.0马蹄莲智能合约开发原理丨MetaForce佛萨奇2.0马蹄莲智能合约DAPP系统开发成熟案例及源码部署

热门文章

最新文章