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等。抢占优先级值依赖于优先级分组设定。
|
7月前
|
算法 大数据 分布式数据库
DAPP质押模式系统开发项目方案|DAPP合约开发案例
区块链技术是一种分布式数据库技术,它是由多个节点构成的去中心化网络
|
7月前
|
安全 区块链
DAPP模式系统开发设计方案丨DAPP合约系统开发技术方案
DAPP模式系统开发设计方案丨DAPP合约系统开发技术方案
|
7月前
|
安全 测试技术 区块链
“DApp智能合约开发:流程、难点与解决方案”
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:
|
机器学习/深度学习 存储 传感器
Mortonn摩顿DAPP合约系统开发项目方案
Mortonn摩顿DAPP合约系统开发项目方案
178 0
|
算法 安全 Unix
DAPP马蹄链佛萨奇2.0智能合约系统开发(案例及详细)丨DAPP马蹄链佛萨奇2.0开发智能合约源码及方案
 Web3.0通过将信息交互从屏幕转移到物理空间,改变了终端用户体验,因而也有称Web3.0为“空间网络(Spatial Web)”。
|
存储 算法 区块链
区块链DAPP智能合约项目系统开发讲解方案
区块链DAPP智能合约项目系统开发讲解方案
235 11