我的位置: 主页 > 数字币群文章 > 数字币群技巧 > MOLDEX α 的系统架构

MOLDEX α 的系统架构

发布人:数字币群 发时间:2019-07-19 03:25 热度:
MOLDEX α的布局旨在了解措置惩罚惩罚性能和非成果性要求(例如可用性,操纵和可维护性),用户角度的可设计性以及未来的

我们在2019年6月30日颁布了MOLDEX α。在这里,我们将总结MOLDEX α系统架构的概述,包孕以下三点。但愿它对Dapps和区块链的未来成长有所辅佐。

· 关于DEX的智能合约
· 关于处事器端
· 关于浏览器钱包

MOLDEX α的布局旨在了解措置惩罚惩罚性能和非成果性要求(例如可用性,操纵和可维护性),用户角度的可设计性以及未来的UX改造。别的,考虑到与区块链的兼容性,MOLDEX α配置了完整的区块处事器。

关于DEX的智能合约

与MOLDEX α一起使用的智能合约可以用github或Etherscan确认。在MOLDEX α中,我们界说了交易函数(稍后描述),以便任何人都可以交换ERC721和ERC20(甚至与ETH交换)。

资产智能合约

在DEX智能合约方面构建通证(token)交换机制时,使用ERC20和ERC721中界说的两个函数approve()和transferFrom()。

· approve()

approve()函数用于允许第三方(在本例中为DEX合约)从发件人的余额中转移通证(token)(在ERC721的情况下,指定tokenId)。通证(token)存储在允许类型映射数据布局中。

// ERC20 
  function approve(
    address _spender, 
    uint256 _value

    public 
    returns (bool) 
{
    allowed[msg.sender][_spender] = _value;
    emit Approval(msg.sender, _spender, _value);
    return true;
}
// ERC721
  function approve(address _to, uint256 _tokenId) public {
    address owner = ownerOf(_tokenId);
    require(_to != owner);
    require(msg.sender == owner || isApprovedForAll(owner, msg.sender));    tokenApprovals[_tokenId] = _to;
    emit Approval(owner, _to, _tokenId);
  }

· transferFrom()

transferFrom()函数用于由第三方传输通证(token)(在本例中为DEX合约)。第三方(msg.sender)只能提取低于允许的余额(ERC721只能提取指定的tokenId)。

// ERC20
  function transferFrom(
    address _from,
    address _to,
    uint256 _value
  )
    public
    returns (bool)
  {
    require(_value <= balances[_from]);
    require(_value <= allowed[_from][msg.sender]);
    require(_to != address(0));
balances[_from] = balances[_from].sub(_value);
    balances[_to] = balances[_to].add(_value);
    allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
    emit Transfer(_from, _to, _value);
    return true;
  }
// ERC721
  function transferFrom(
    address _from,
    address _to,
    uint256 _tokenId
  )
    public
  {
    require(isApprovedOrOwner(msg.sender, _tokenId));
    require(_from != address(0));
    require(_to != address(0));
clearApproval(_from, _tokenId);
    removeTokenFrom(_from, _tokenId);
    addTokenTo(_to, _tokenId);
emit Transfer(_from, _to, _tokenId);
  }

· allowance()

allowance()函数是一个视图函数,它返回由approve()函数指定的通证(token)值。在ERC721的情况下,getApproved()函数以不异的方法筹备,并且它是一个视图函数,它返回有权从tokenId传输通证(token)的地点(即已批准)。

// ERC20
  function allowance(
    address _owner,
    address _spender
   )
    public
    view
    returns (uint256)
  {
    return allowed[_owner][_spender];
  }

// ERC721
  function getApproved(uint256 _tokenId) public view returns (address) {
    return tokenApprovals[_tokenId];
  }

资产交换流程

Taker为Token Contract执行approve()函数,并批准转移任意数量的moldcoin(在网站中,它暗示为存款但实际上是批准的过程)。

制造商将执行Dex Contract交易成果所需的数据通报给处事器。Taker将执行Dex Contract的交易成果所需的数据通报给处事器。

在处事器端,当收集Maker和Taker的数据时,执行交易成果。在交易成果中,执行Dex Contract允许的transferFrom()。此时,联网数字货币是什么,transferFrom要传输的通证(token)必需由approve()函数批准。

执行transferFrom()函数以完成从Taker到Maker的Moldcoin转移,以及将ERC721资产从Maker转移到Taker。

分享给朋友: