精华内容
下载资源
问答
  • 测试网络现在不可使用于发行代币,下图中有图片为测试网络,请忽略。其并不影响发币过程 一、安装环境 1、在chrome浏览器安装MetaMask插件(无法安装的话自行想一下谷歌怎么上) ...contract TokenERC20 {
  • 以太坊ERC20代币增发

    2018-09-17 16:52:24
    以太坊ERC20代币增发智能合约!
  • 以太坊ERC20合约源码

    2018-06-05 14:26:10
    以太坊ERC20合约源码以太坊ERC20合约源码以太坊ERC20合约源码以太坊ERC20合约源码
  • 什么是以太坊ERC20和ERC721

    千次阅读 2021-08-18 11:42:34
    什么是以太坊ERC20和ERC721 首先,ERC是什么? ERC是由Etherum开发人员为益泰坊社区编写的。为了创建一个以太坊平台的标准,开发人员应当提交了一个以太坊改进方案(EIP,EthereumImprovementProtocol),改进方案...

    什么是以太坊ERC20和ERC721

    首先,ERC是什么?

    ERC是由Etherum开发人员为益泰坊社区编写的。为了创建一个以太坊平台的标准,开发人员应当提交了一个以太坊改进方案(EIPEthereum Improvement Protocol),改进方案中包括协议规范和合约标准。一旦EIP被委员会批准并最终确定,它就成为ERC。

    由于这些标准,智能合同和令牌交互更加容易,因此开发人员可以在以太坊子上创建 dapps。你会听到一个常见的类比来解释这个好处: 以太坊类似于IOS和Android的dapps——一个支持应用程序并使其易于构建的操作系统。

    目前,最常见的以太网标记标准是ERC-20和ERC-721。那么ERC20和ERC721代表什么,它们之间有什么区别

    先简单介绍一下什么是ERC-20和ERC-721。

    1、ERC-20

    ERC-20是最广为人知的标准。

    Erc-20标准规定令牌必须有其名称、符号、总供应量和其他功能,包括转账和汇款。这个标准的优点是,只要令牌符合 erc-20标准,它将与以太钱包兼容。也就是说,你可以把代币加到你的乙醚房子钱包里,然后通过你的钱包发送给别人。

    由于ERC-20标准的存在,发行Token非常简单。目前,以太坊的ERC-20代币数量超过18万。

    2、ERC-721

    如果 erc-20如此强大,为什么还有额外的 erc-721标准?前面提到的 erc-20标准令牌在价值上没有差别,而且不再适用于需要独特属性的资产,比如加密的收藏品和游戏道具。

    ERC-721标准规定,每个符合其标准的令牌都有一个唯一的令牌标识。在ERC-721标准中,每个令牌都是唯一的。也就是说,在ERC-721标准下,你的100元和我的100元是不一样的,因为两个100元的数字是不一样的。

    如何区分ER-20和ERC-721?

    用一个例子直接说明。如果在区块链有一个虚拟宠物应用程序,里面有100只猫。如果这个应用的Token是基于ERC-20标准开发的,我们同时都有一只猫,那么你的猫和我的猫是一样的,猫的Token是可以分的。例如,如果它被分成10个副本,那么每个副本都是0.1 Token。

    如果这个应用的Token是基于ERC-721标准开发的,那么反正你的猫和我的不一样,因为我们的猫ID是不一样的,猫作为一个整体是不可分割的,是唯一的。

    在这个例子中,我们可以看到ERC20令牌和ERC721令牌之间的两个区别:

    1.ERC-20标准的令牌没有价值区分,可以互换;ERC-721标准中的令牌不可互换,每个令牌都有唯一的标识。

    2.ERC-20标准的令牌是可以划分的,而ERC-721标准的令牌是不能划分的。

    这是因为两个标准之间的差异,它们可以应用于不同的场景。事实上,ERC还有ERC233,ERC777等标准,请期待小编的后续讲解。

    展开全文
  • BringsEthereumtoyourbrowser一个可以浏览器上进行操作的以太坊钱包,推荐Chrome。2.在METAMASK创建钱包3.从以太坊官网复制代币代码模板CreateacryptocurrencycontractinEthereumwww.ethereum.org 4.修改代币参数...
  • Erc20Tokens数据集包含超过1000种主流的以太坊ERC20代币的描述数据清单和图标,可用于钱包等区块链应用的开发,支持使用Java、Python、Php、NodeJs、C#等各种开发语言查询主流ERC20代币的相关数据。下载链接:ERC20...

    Erc20Tokens数据集包含超过1000种主流的以太坊ERC20代币的描述数据清单和图标,可用于钱包等区块链应用的开发,支持使用Java、Python、Php、NodeJs、C#等各种开发语言查询主流ERC20代币的相关数据。下载链接:

    ERC20代币数据集 - 汇智网​sc.hubwiz.com
    554cdd0755dc5bdf9d51193201bc159a.png

    1、数据集概述

    以下是ERC20代币数据集中部分代币的图标示意:

    fed69023c6f443bf61da87913919c3f0.png

    Erc20Tokens数据集的的当前版本为1.0.0,主要文件清单参见:http://sc.hubwiz.com/codebag/erc20-tokens-dataset/

    2、数据集结构说明

    数据集的主文件为erc20-tokens.json,其中的每个ERC20代币都包含以下描述信息:

    • name:代币名称,例如:Dai
    • symbol:代币符号,例如:DAI
    • address:代币部署地址,例如:0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359

    例如erc20-tokens.json文件中Dai和Peerguess代币的数据:

    [
      {
        "name": "Dai"
        "symbol": "dai", 
        "address": "0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359", 
      }
      ...
      {
        "name": "Peerguess"
        "symbol": "guess", 
        "address": "0xbdcfbf5c4d91abc0bc9709c7286d00063c0e6f22", 
      }
      ...
    ]

    ERC20代币的图标保存在icons目录下,文件名为代币的符号。例如:

    erc20-token-dataset
      |- icons
           |- dai.png              # Dai代币的图标
           |- guess.png            # Peerguess代币的图标
           |- ...

    3、在程序中使用数据集

    可以使用Java、Python、PHP、C#、JavaScript等常见开发语言读取数据集。

    下面的代码使用Php显示数据集中所有ERC20代币的合约部署地址:

    <?php
    $tokens = json_decode(file_get_contents('../tokens.json'));
    foreach($tokens as $token){
      echo $token->symbol . ' : ' . $token->address . PHP_EOL;
    }
    

    下面的代码使用NodeJS显示数据集中所有ERC20代币的合约部署地址:

    const tokens = require('../tokens.json')
    tokens.forEach(token => console.log(`${token.symbol} : ${token.address}`))

    下面的代码使用Python显示数据集中所有ERC20代币的合约部署地址:

    import json
    with open('./tokens.json','r') as f:
      tokens = json.load(f)
    for token in tokens:
      print(token['symbol'],' : ',token['address'])

    4、数据来源

    本数据集由汇智网基于互联网及区块链上的公开数据整理,如需定制请咨询 技术支持QQ。

    展开全文
  • 发行自己的以太坊ERC20代币---超级详细

    千次阅读 热门讨论 2021-05-16 13:47:41
    点击刚刚发布的智能合约地址,就会调转到Etherscan(以太坊的区块浏览器),耐性等待智能合约的创建。 点击确认,支付成功后,然后他会自动部署合约,等一会,去区块浏览器查你的ETH主账号的事物:地址为:...

    1、安装MetaMask插件+新建钱包

    注意:电脑是需要ke学上网的,并且需要使用谷歌浏览
    注意:电脑是需要ke学上网的,并且需要使用谷歌浏览
    注意:电脑是需要ke学上网的,并且需要使用谷歌浏览

    1. 在谷歌浏览器中打开这个地址安装MetaMask钱包插件:https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn?authuser=2
      在这里插入图片描述
    2. 打开页面点击点击到浏览器即可完安装操作。安装成功后会自动打开MetaMask的页面,点击【创建钱包】进行创建钱包操作。(发行代币是需要旷工费的,并且以eth形式支付)
      在这里插入图片描述在这里插入图片描述
    3. 输入钱包名后即可创建,创建后会自动生成助记词,助记词一定要保留好。后续会让你输入助记词验证成功后钱包才会创建成功。
      在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

    2、进行合约的创建+发布

    1. 打开网站:https://www.myetherwallet.com/点击【Access My Wallet】接着在新页面点击【MEW CX】
      在这里插入图片描述在这里插入图片描述
    2. 勾选我接受后点击【Access My Wallet】此时会自动打开之前安装好的MetaMask钱包插件,在MetaMask钱包插件页面点击【下一步】接着点击【连接】即可。
      在这里插入图片描述在这里插入图片描述在这里插入图片描述
    3. 上一步点击【连接】后会自动回到这个页面,点击【Contract】—【Deploy Contract】即可。保留此页面不要关闭

    在这里插入图片描述

    1. 接着在新的标签页打开Remix网页,这是一个在线的Solidity编译器。网站地址:Remix网页
    2. Solidity编译器页面点击【contracts】可以看到自带的3个文件,此时我们新建一个文件并将如下代码复制进去即可。
      在这里插入图片描述
    pragma solidity ^0.4.16;
    
    interface tokenRecipient { function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData) public; }
    
    contract TokenERC20 {
        string public name;
        string public symbol;
        uint8 public decimals = 18;  // 18 是建议的默认值
        uint256 public totalSupply;
        mapping (address => uint256) public balanceOf;
        mapping (address => mapping (address => uint256)) public allowance;
        event Transfer(address indexed from, address indexed to, uint256 value);
        event Approval(address indexed owner, address indexed spender, uint256 value);
        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;
            name = tokenName;
            symbol = tokenSymbol;
        }
        
        function _transfer(address _from, address _to, uint _value) internal {
            require(_to != 0x0);
            require(balanceOf[_from] >= _value);
            require(balanceOf[_to] + _value > balanceOf[_to]);
            uint previousBalances = balanceOf[_from] + balanceOf[_to];
            balanceOf[_from] -= _value;
            balanceOf[_to] += _value;
            Transfer(_from, _to, _value);
            assert(balanceOf[_from] + balanceOf[_to] == previousBalances);
        }
        
        function transfer(address _to, uint256 _value) public returns (bool) {
            _transfer(msg.sender, _to, _value);
            return true;
        }
        
        function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
            require(_value <= allowance[_from][msg.sender]);     // Check allowance
            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;
            Approval(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;
            }
        }
        
        function burn(uint256 _value) public returns (bool success) {
            require(balanceOf[msg.sender] >= _value);
            balanceOf[msg.sender] -= _value;
            totalSupply -= _value;
            Burn(msg.sender, _value);
            return true;
        }
        
        function burnFrom(address _from, uint256 _value) public returns (bool success) {
            require(balanceOf[_from] >= _value);
            require(_value <= allowance[_from][msg.sender]);
            balanceOf[_from] -= _value;
            allowance[_from][msg.sender] -= _value;
            totalSupply -= _value;
            Burn(_from, _value);
            return true;
        }
    }
    
    1. 点击编译按钮,选择版本号要和代码中的一致(此处是0.4.16),选择好后点击【compile】即可完成编译。此时最下面会有【ABI】、【Bytecode】两个按钮,点击对应的即可复制相关内容。打开上述的网站粘贴复制的内容即可。
      在这里插入图片描述在这里插入图片描述在这里插入图片描述
    2. 复制完成后继续填写相关信息,最后点击【Sing Transaction】按钮,此时会打开MetaMask钱包插件,可以看到完成发布需要支付181$的手续费给矿工,手续费以eth形式支付(到此我先暂时停止后续操作了,毕竟手续费略贵)
      在这里插入图片描述在这里插入图片描述在这里插入图片描述
    3. 如果你给钱包里充值了eth并且足够支付手续费的话即可点击上述页面的【确定】按钮完成后续的发布和验证

    3、提交合约+发布合约+验证

    以下内容来自网络,并非自己实际操作。
    以下内容来自网络,并非自己实际操作。
    以下内容来自网络,并非自己实际操作。

    1. 点击“确定”后,就可以看到MetaMask弹出的“CONFIRM TRANSACTION”的页面,这个页面是用来确认发送的,点击“CONFIRM”确认提交。
      在这里插入图片描述

    2. 点击刚刚发布的智能合约地址,就会调转到Etherscan(以太坊的区块浏览器),耐性等待智能合约的创建。
      在这里插入图片描述

    3. 点击确认,支付成功后,然后他会自动部署合约,等一会,去区块浏览器查你的ETH主账号的事物:地址为:https://etherscan.io/address/(加上你自己的支付矿工费用的ETH账号地址);点击进入
      在这里插入图片描述

    4. 下图则为你的代币地址,然后查看代币的具体信息:地址为:
      https://etherscan.io/token/(你自己的代币地址)
      在这里插入图片描述

    5. 验证是否正常:打开MetaMask钱包插件,点击【add token】,在【token address】中输入token地址
      在这里插入图片描述在这里插入图片描述

    6. 此时在MetaMask钱包插件即可看到刚刚添加的token。
      在这里插入图片描述

    展开全文
  • 一个基于对数ERC20令牌的简单以太坊钱包。 轻松安全地发送以太坊(ETH)和对数令牌(LGR)。 以太坊钱包被解密,原始交易在本地签名。 原始交易直接发送到EtherScan.io。 钱包私钥保存在本地计算机上,每次要使用此...
  • 确保已安装 chrome扩展程序,该扩展程序允许您的Web浏览器连接到以太坊网络。 npm启动资产生成器后,然后在chrome浏览器中访问 。 执照 该分支中的代码已获得MIT的(请参阅) 在这里随意修改或重用代码。
  • 前面实验了一下ETH对接的接口,今天打算试一下ERC20代币的对接,说白了就是将以太坊区块中的transtraction数据解析出来,单纯ETH的转账很简单,所有的信息都是明文(以太坊现在据称是支持了零知识证明,不知道那种...

    前面实验了一下ETH对接的接口,今天打算试一下ERC20代币的对接,说白了就是将以太坊区块中的transtraction数据解析出来,单纯ETH的转账很简单,所有的信息都是明文(以太坊现在据称是支持了零知识证明,不知道那种记录长啥样,暂时无法分析)。

    在私链中转移一个代币,根据返回的tx号,我们到console中得到完整信息如下

    a885224e10c2

    ERC20代币transaction

    前面ETH转账时,from、to、value即为转账双方和金额,这里对了一下信息

    form:事务发起者

    to:合约地址

    查询了一下资料,https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI 这里有对合约数据的详细说明,也就是这里的input,大意是前10个字节是合约函数的hash,后面是输入参数经过编码后拼接起来的,wiki中讲述了每种格式的编码规则,按照这个规则即可实现编解码。

    JS版本解码

    python版本

    由于平时是使用python居多,去看了web3.py,没有找到解析input的函数,倒是有个decode_abi,可以将参数解析出来,函数名无法得到,后面想了想还是根据js的版本改写一个python版本吧,如果有其他的朋友正好需要可以拿去使用,上代码

    # -*- coding: utf-8 -*-

    from web3 import HTTPProvider

    from web3 import Web3

    from eth_abi import decode_abi

    ETH_HTTP_PROVIDER_DB="http://127.0.0.1:8200"

    ETH_HTTP_PROVIDER_ACCOUNT="http://127.0.0.1:8200"

    false=False

    true=True

    abi=[{"constant":false,"inputs":[{"name":"newSellPrice","type":"uint256"},{"name":"newBuyPrice","type":"uint256"}],"name":"setPrices","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sellPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"},{"name":"mintedAmount","type":"uint256"}],"name":"mintToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_value","type":"uint256"}],"name":"burnFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"buyPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"buy","outputs":[{"name":"amount","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"frozenAccount","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"ptransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"sell","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"},{"name":"freeze","type":"bool"}],"name":"freezeAccount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"initialSupply","type":"uint256"},{"name":"tokenName","type":"string"},{"name":"decimalUnits","type":"uint8"},{"name":"tokenSymbol","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"target","type":"address"},{"indexed":false,"name":"frozen","type":"bool"}],"name":"FrozenFunds","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"target","type":"address"},{"indexed":false,"name":"val","type":"uint256"},{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"PayETHEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"target","type":"address"},{"indexed":false,"name":"val","type":"uint256"},{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"BuyEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"target","type":"address"},{"indexed":false,"name":"val","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"BuyEventCalc","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"target","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"},{"indexed":false,"name":"calc","type":"uint256"}],"name":"SellEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"}]

    input="0xa9059cbb000000000000000000000000855ecc6b1c1cd332ea87e0f77189e8318deadc9d000000000000000000000000000000000000000000000000000000000000c350"

    contract_address="0x9650bd781FbbE71bC65583B5205E2Fe69B1611c2"

    web3=Web3(HTTPProvider(ETH_HTTP_PROVIDER_ACCOUNT))

    contract=web3.eth.contract(abi,contract_address)

    def getFunctionHashes(web3,abi):

    hashes = [];

    for i in range(0,len(abi)):

    item = abi[i]

    if (item['type'] != "function"):

    continue

    signature = item['name'] + "(" + ",".join(map(lambda input:input['type'],item['inputs'])) + ")"

    hash = web3.sha3(signature.encode("hex"))

    hashes.append({'name': item['name'], 'hash': hash, 'inputs':[(x['name'],x['type']) for x in item['inputs']]})

    return hashes

    def findFunctionByHash(hashes, functionHash):

    for i in range(0,len(hashes)):

    if hashes[i]['hash'][:10] == functionHash[:10]:

    return hashes[i]['name'],hashes[i]['inputs']

    return None,None

    if __name__=="__main__":

    hashes=getFunctionHashes(web3,abi)

    func,name_and_type=findFunctionByHash(hashes,input)

    print func,decode_abi([x[1] for x in name_and_type], input[10:].decode('hex'))

    print func,zip([x[0] for x in name_and_type],decode_abi([x[1] for x in name_and_type], input[10:].decode('hex')))

    运行结果如下

    a885224e10c2

    图片.png

    可以看到,这个transaction对应的函数以及参数,后面要做的就是自己的入账处理了,这里不再啰嗦了

    展开全文
  • 如何创建以太坊ERC20代币

    千次阅读 2018-05-18 09:04:54
    什么是ERC20可以把ERC20简单理解成以太坊上的一个代币协议,所有基于以太坊开发的代币合约都遵守这个协议。遵守这些协议的代币我们可以认为是标准化的代币,而标准化带来的好处是兼容性好。这些标准化的代币可以被...
  • 以太坊ERC20 Token标准完整说明

    千次阅读 2018-09-15 21:44:26
    可以通过.value()函数控制支付的以太币的数量 addr.call.value(1 ether)(1, "MyName"); 这两个函数可以不分顺序同时使用 addr.call.gas(1000000).value(1 ether)(1, "MyName"); 注意 合约中...
  • 一.ERC20代币合约与web3调用ERC20代币合约在小白看来觉得很高大上,但其实就是一个代币的定义标准,方便其他dapp统一调用各种代币的方法。如图:二.ERC20合约标准contract ERC20 {//**********9个函数*******//1....
  • 首先,从以太坊演变的历史源头出发,分析ERC20代币智能合约标准从诞生到定型的全过程,深度解释ERC20关键方法的社区争论和最终考量逻辑。其次,用Solidity实现一个极简的代币智能合约,部署到Kovan测试网络运行,...
  • 解析——什么是ERC-1155 - 知乎
  • 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本...把合约代码复制到编辑器中(这里用我的上一个博客的ERC20高级代币源码) Start to compile编译合约代码、如果没有报错就可以..
  • 保存助记词 4、转入一个ETH 二、发布合约 由于以太坊智能合约使用的是Solidity语言,所以需要使用Solidity开发。 进入到这个网站进行合约发布 在此是需要已经安装Chrome插件的 1、合约模版 pragma solidity ^0.4.16;...
  • 公开交易网络令牌 开放交易网络(OTN)–第一个提供跨链技术的平台,以团结所有区块链网络和市场参与者,并确保他们的最大利益。
  • 以太坊erc20转账失败的情况和原因

    千次阅读 2018-09-29 20:03:00
    以太坊erc20转账失败的情况和原因 eth转账失败有多种情况,除了手续费过低以外(Out of gas),众筹额度满了(Bad instruction)也会失败链上转账有可能失败,转账失败转账的币退回,但设置的手续费gas不退回的交易所...
  • 以太坊 erc20Editor Note: This article is for informational and entertainment purposes only and is not intended as financial advice. 编者注:本文仅用于提供信息和娱乐目的,不作为财务建议。 Hi there! It...
  • 博文地址:...什么是ERC20 token 市面上出现了大量的用ETH做的代币,他们都遵守REC20协议,那么我们需要知道什么是REC20协议。 概述 token代表数字资产,具有价值,但是并不是都符
  • 周一听了oldlee《如何发行基于以太坊的数字货币》的精彩演讲,才发现发行以太坊ERC20 Token很简单,这是一件小白也可以做到的事情。以下是我对本次讲座内容的实践: 一、安装环境 1、在chrome浏览器安装MetaMask...
  • 以太坊-ERC20代币自动充提系统http://pay.ethhelp.cn适用方式:USDT/ETH/XEC20节点API开发RPC文档,ERC20代币通道对接,ERC20代币充提币接口,虚拟币支付通道功能介绍:1.ETH、ERC20代币、以太坊USDT等虚拟币开放式API...
  • 【Ethereum】以太坊ERC20与ERC233的区别

    万次阅读 2017-09-26 11:16:45
    什么是ERC223ERC223是继ERC20后推出的新标准,解决了ERC20中的一些问题相关说明ERC223开发的主要目标1.合约中意外丢失token: 有两种不同的方式来转移ERC20 token: 1) 合约地址 2) 钱包地址 ,你需要调用transfer发送...
  • 以太坊 erc20by Il Kadyrov 由Il Kadyrov 如何编写ERC-20以太坊智能合约的单元测试 (How to write Unit tests for ERC-20 Ethereum Smart Contracts) It’s very important to write unit tests for your smart ...
  • 以太坊ERC20合约开发首先需要对以太坊,ERC20,智能合约等以太坊开发中的基本概念有了解。根据我们的示例代码就可以发行自己的以太坊 什么是ERC20 可以把ERC20简单理解成以太坊上的一个代币协议,所有基于以太坊开发...
  • 以太坊根据ERC20标准开发代币

    千次阅读 2018-05-18 10:00:00
    以太坊ERC20代币开发首先需要对以太坊,代币,ERC20,智能合约等以太坊代币开发中的基本概念有了解。根据我们的示例代码就可以发行自己的以太坊代币。 什么是ERC20 可以把ERC20简单理解成以太坊上的一个代币协议,...
  • 以太坊ERC20交易的检测

    万次阅读 2018-07-04 20:21:06
    开发中遇到了token交易的检测问题,之前的做法是依靠交易中的input字段,如果有支持erc20标准的token交易,则input字段必然会有transfer函数的消息;如下图;根据input字段判断之后,在获取交易的Receipt,根据log...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,631
精华内容 2,252
关键字:

以太坊ERC20