大小公排双轨互助模式dapp系统开发智能合约代码分析

简介: 大小公排双轨互助模式dapp系统开发智能合约代码分析

transfer转帐函数,一个比较重要的功能,调用者可以将自己的余额转给其它帐户。

_transfer为private的具体实现函数。主要是作了一些必要的检查,然后从发起帐户扣减余额,再将余额加到接收帐户。最后发送了一个转帐事件,方便开发者监听转帐功能。这里的_beforeTokenTransfer和_afterTokenTransfer并没有实现具体功能,开发中可根据实现需要做一些功能实现。
allowance、approve主要是实现授权其它帐户可以使用自己的余额,并设定使用上限。相关的授权者存储在_allowances变量中。

function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
    address owner = msg.sender;
    _approve(owner, spender, _allowances[owner][spender] + addedValue);
    return true;
}

function decreaseAllowance(address spender, uint256 substractedValue) public virtual returns (bool) {
    address owner = msg.sender;
    uint256 currentAllowance = _allowances[owner][spender];
    require(currentAllowance >= substractedValue, "ERC20: decreased allowance below zero");
    unchecked {
        _approve(owner, spender, currentAllowance - substractedValue);
    }
    return true;
}

increaseAllowance、decreaseAllowance两个函数是对approve函数功能的加强,对授权额度进行增减,这两个函数关不是ERC20协议中的内容。只是作者在参考源码时觉得有用,就加入了这两个函数。
ransferFrom,_spendAllowance是在授权额度下,进行转帐的功能实现。

transferFrom函数的from参数是授权帐户,to是余额接受帐户,amount是转帐余额,该函数的功能是将from帐户的余额转移amount个数据至to用户帐户中,调用者必须是from帐户通过_approve对其进行过授权,并且还有剩余的授权额度。该函数与transfer的区别是,transfer只能转移出调用者自己的帐户余额。

_spendAllowance是在进行授权转帐时首先扣减授权额度,保证被授权都在授权额度范围内使用转帐功能。

相关文章
|
6月前
|
安全
链游系统开发DAPP项目逻辑讲解方案
链游系统开发具有以下优势:   1.Decentralization:Chain game systems are based on blockchain technology and do not rely on centralized servers,providing a more fair and transparent gaming environment.   2.Data security:Through the decentralized characteristics and encryption algorithms of blockchain,the chai
|
存储 安全 区块链
DAPP互助公排智能合约系统开发方案与需求
智能合约是需要区块链开发者用区块链编程语言写出来的一串代码,根据不同场景构思逻辑后开发出来的信任机制
|
存储 区块链 数据库
DAPP智能合约循环互助游戏模式系统开发
区块链技术通过其去中心化、安全性和透明性等特点,为许多领域提供了创新的解决方案。
|
供应链 算法 区块链
智能合约互助公排系统开发指南与方案
作为一种自动执行的协议,智能合约被嵌入在区块链计算机代码中
|
存储 安全 区块链
DAPP三三复制系统开发(模式)|DAPP合约公排系统开发方案
我们并不能当然认为,所有的中心化系统就是可篡改的、不真实的
|
区块链 数据安全/隐私保护 算法
DAPP互助公排系统开发|DAPP三三复制系统开发(模式)
Web3.0的主要特点是开放、隐私和去中心化。
|
安全 区块链
DAPP互助拆分公排系统开发(智能合约)
去中心化,不是不要中心,而是由节点来自由选择中心、自由决定中心。简单地说,中心化的意思,是中心决定节点。
|
存储 设计模式 开发框架
DAPP排单互助公排系统开发智能合约模式
智能合约开发:学习使用智能合约开发语言(如Solidity),熟悉智能合约的编写
|
数据管理 区块链
DAPP智能合约/泰山众筹/互助公排模式系统开发合约源代码详情
def tfs(contract, token_name, user_address, amount): # 检查用户是否有足够的代币 balance = contract.functions.balanceOf(token_name, user_address).call()