精华内容
下载资源
问答
  • 以太坊代币开发
    2018-11-14 09:50:52

    本文作者:陈进坚
    博客地址:https://jian1098.github.io
    CSDN博客:https://blog.csdn.net/c_jian
    简书:https://www.jianshu.com/u/8ba9ac5706b6
    联系方式:jian1098@qq.com

    环境要求

    • 以太坊公链或私有链
    • 一个有以太币的钱包:用于支付手续费和接收代币
    • EthereumWallet客户端

    部署合约

    在Ethereum Wallet客户端中点击 CONTRACTS => DEPLOY NEW CONTRACT ,然后FROM填你的以太坊地址,一般会自动填上。在下方SOLIDITY CONTRACT SOURCE CODE的编辑框中填入官方的创建代币的合约代码

    官方代码的地址:https://ethereum.org/token ,这个代码复制到Ethereum Wallet会报"Defining constructors as functions with the same name as the contract is deprecated."的错误,把第5行代码中的合约名字 TokenERC20 改为 其他名称即可,例如 Token。

    另外如果代币的小数位数不是18位,需要修改代码第9行中的 public decimals 为你需要的小数位数

    完整代码如下

    pragma solidity ^0.4.16;
    
    interface tokenRecipient { function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData) external; }
    
    contract Token {
        // Public variables of the token
        string public name;
        string public symbol;
        uint8 public decimals = 18;
        // 18 decimals is the strongly suggested default, avoid changing it
        uint256 public totalSupply;
    
        // This creates an array with all balances
        mapping (address => uint256) public balanceOf;
        mapping (address => mapping (address => uint256)) public allowance;
    
        // This generates a public event on the blockchain that will notify clients
        event Transfer(address indexed from, address indexed to, uint256 value);
        
        // This generates a public event on the blockchain that will notify clients
        event Approval(address indexed _owner, address indexed _spender, uint256 _value);
    
        // This notifies clients about the amount burnt
        event Burn(address indexed from, uint256 value);
    
        /**
         * Constructor function
         *
         * Initializes contract with initial supply tokens to the creator of the contract
         */
        function TokenERC20(
            uint256 initialSupply,
            string tokenName,
            string tokenSymbol
        ) public {
            totalSupply = initialSupply * 10 ** uint256(decimals);  // Update total supply with the decimal amount
            balanceOf[msg.sender] = totalSupply;                // Give the creator all initial tokens
            name = tokenName;                                   // Set the name for display purposes
            symbol = tokenSymbol;                               // Set the symbol for display purposes
        }
    
        /**
         * Internal transfer, only can be called by this contract
         */
        function _transfer(address _from, address _to, uint _value) internal {
            // Prevent transfer to 0x0 address. Use burn() instead
            require(_to != 0x0);
            // Check if the sender has enough
            require(balanceOf[_from] >= _value);
            // Check for overflows
            require(balanceOf[_to] + _value >= balanceOf[_to]);
            // Save this for an assertion in the future
            uint previousBalances = balanceOf[_from] + balanceOf[_to];
            // Subtract from the sender
            balanceOf[_from] -= _value;
            // Add the same to the recipient
            balanceOf[_to] += _value;
            emit Transfer(_from, _to, _value);
            // Asserts are used to use static analysis to find bugs in your code. They should never fail
            assert(balanceOf[_from] + balanceOf[_to] == previousBalances);
        }
    
        /**
         * Transfer tokens
         *
         * Send `_value` tokens to `_to` from your account
         *
         * @param _to The address of the recipient
         * @param _value the amount to send
         */
        function transfer(address _to, uint256 _value) public returns (bool success) {
            _transfer(msg.sender, _to, _value);
            return true;
        }
    
        /**
         * Transfer tokens from other address
         *
         * Send `_value` tokens to `_to` on behalf of `_from`
         *
         * @param _from The address of the sender
         * @param _to The address of the recipient
         * @param _value the amount to send
         */
        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;
        }
    
        /**
         * Set allowance for other address
         *
         * Allows `_spender` to spend no more than `_value` tokens on your behalf
         *
         * @param _spender The address authorized to spend
         * @param _value the max amount they can spend
         */
        function approve(address _spender, uint256 _value) public
            returns (bool success) {
            allowance[msg.sender][_spender] = _value;
            emit Approval(msg.sender, _spender, _value);
            return true;
        }
    
        /**
         * Set allowance for other address and notify
         *
         * Allows `_spender` to spend no more than `_value` tokens on your behalf, and then ping the contract about it
         *
         * @param _spender The address authorized to spend
         * @param _value the max amount they can spend
         * @param _extraData some extra information to send to the approved contract
         */
        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;
            }
        }
    
        /**
         * Destroy tokens
         *
         * Remove `_value` tokens from the system irreversibly
         *
         * @param _value the amount of money to burn
         */
        function burn(uint256 _value) public returns (bool success) {
            require(balanceOf[msg.sender] >= _value);   // Check if the sender has enough
            balanceOf[msg.sender] -= _value;            // Subtract from the sender
            totalSupply -= _value;                      // Updates totalSupply
            emit Burn(msg.sender, _value);
            return true;
        }
    
        /**
         * Destroy tokens from other account
         *
         * Remove `_value` tokens from the system irreversibly on behalf of `_from`.
         *
         * @param _from the address of the sender
         * @param _value the amount of money to burn
         */
        function burnFrom(address _from, uint256 _value) public returns (bool success) {
            require(balanceOf[_from] >= _value);                // Check if the targeted balance is enough
            require(_value <= allowance[_from][msg.sender]);    // Check allowance
            balanceOf[_from] -= _value;                         // Subtract from the targeted balance
            allowance[_from][msg.sender] -= _value;             // Subtract from the sender's allowance
            totalSupply -= _value;                              // Update totalSupply
            emit Burn(_from, _value);
            return true;
        }
    }
    

    将代码复制过去之后,发现后边会出现下拉框,选择“Token”(就是你合约的名字),然后点击最下面的“DEPLOY”,在弹出框中输入账号密码等待交易完成。

    创建代币

    • 点击“CONTRACT”会发现在灰色背景的栏目“Custom Contracts”中多了刚刚创建的合约,点击它进入这个合约。
    • 在界面的右下角下拉框选择“Token ERC 20”,下面的输入框分别填写代币的发行量、具体名称 (比如Ethereum),代币符号(就是代币的单位,比如ETH),然后点击“EXECUTE”按钮,输入账号密码等待交易完成。
    • 交易完成后点击“CONTRACT”拉到最下面点击刚刚创建的代币,填写代币的名称、符号和位数,点击OK保存好代币的信息。
    • 首页点击你创建代币的钱包地址,会发现以太币余额下面多出一行代币的余额。鼠标移上去点击Send即可发送代币交易。
    更多相关内容
  • 1、本系统针对波场TRC20空投,后端采用PHP+Swoole+Mysql开发,前端页面采用Vue+Elementui开发,可自定义空投代币...请勿恶意差评,购买之前,可先通过csdn私信咨询确认后再购买, 专注区块链研发,感谢您的一路支持!
  • 新建代币的solidity代码文件 5. 新建部署文件 6. 修改项目配置文件 7. 编译 8. 部署 9. 验证结果 10. 代币使用 10.1 查询代币发行总量 10.2 查询某个账户余额 10.3 给第二个账户打6000代币 1. 构建目录结构 新建一...

    1. 构建目录结构

    新建一个文件夹,ooxxb,进入文件夹,打开cmd
    输入npm init,一路回车

    2. 用truffle初始化项目

    输入truffle init

    3. 引入Openzeppelin

    • github地址
    • 输入npm install @openzeppelin/contracts
    • 可以看到项目文件夹下多了一个文件夹node_modules
    • package.json文件里也多了一个依赖包,说明引入成功!
      在这里插入图片描述

    4. 新建代币的solidity代码文件

    在contracts文件夹下新建一个文件OoxxCoin.sol,内容为:

    // SPDX-License-Identifier: MIT
    pragma solidity >=0.4.22 <0.9.0;
    
    import "../node_modules/@OpenZeppelin/contracts/token/ERC20/ERC20.sol";
    
    contract OoxxCoin is ERC20 {
        constructor() ERC20("OoxxCoin", "ooxxb") {
            _mint(msg.sender, 666666);// 初始化666666个ooxxb
        }
    }
    

    5. 新建部署文件

    在migrations文件夹下新增2_deploy_ooxxcoin.js,内容为:

    const OoxxCoin = artifacts.require("OoxxCoin");
    
    module.exports = function (deployer) {
      deployer.deploy(OoxxCoin);
    };
    
    

    具体说明可参考这篇文章

    6. 修改项目配置文件

    • 打开项目根目录文件下的truffle-config.js
    • 搜索solc,把version注释打开,改成0.8.1(因为Openzeppelin标明了编译要0.8.0版本以上)
      在这里插入图片描述

    7. 编译

    命令行输入

    truffle develop
    

    打开develop模式后,输入

    compile
    

    具体说明可参考这篇文章

    8. 部署

    输入

    migrate
    

    具体说明可参考这篇文章

    9. 验证结果

    • 在命令行先输入:let contract; 回车
    • 再输入:OoxxCoin.deployed().then(instance => contract = instance) 回车
    • 再输入 contract.name(); 如图,可以看到结果正确!
      在这里插入图片描述

    10. 代币使用

    在truffle develop命令后出现的10个虚拟账号,默认部署合约用的是第一个地址来存放发行总量,接下来用前3个虚拟账号来模拟操作

    • 0xc5965f591942d77e06e8a992de650d0044034efd
    • 0xd3648210093776256360315f16f443a67b33e5ff
    • 0x221b2b110afc7261347ebddb738a37338724a673
      在这里插入图片描述

    10.1 查询代币发行总量

    输入

    contract.totalSupply();
    

    在这里插入图片描述

    10.2 查询某个账户余额

    • 查询第一个账户0xc5965f591942d77e06e8a992de650d0044034efd余额
    contract.balanceOf("0xc5965f591942d77e06e8a992de650d0044034efd");
    

    PS:默认部署合约用的是第一个地址来存放发行总量,所以可以查到余额等于发行总量。
    在这里插入图片描述

    • 查询第二个账户0xd3648210093776256360315f16f443a67b33e5ff余额
    contract.balanceOf("0xd3648210093776256360315f16f443a67b33e5ff");
    

    这次就查到余额为0了
    在这里插入图片描述

    • 查询第三个账户0x221b2b110afc7261347ebddb738a37338724a673余额
     contract.balanceOf("0x221b2b110afc7261347ebddb738a37338724a673");
    

    在这里插入图片描述
    同样余额为0

    10.3 给第二个账户打6000代币

    输入

    contract.transfer("0xd3648210093776256360315f16f443a67b33e5ff",6000);
    

    查询第二个账户余额,有6000,结果正确

    contract.balanceOf("0xd3648210093776256360315f16f443a67b33e5ff");
    

    在这里插入图片描述
    查询发行量余额,666666-6000=66066,结果正确

    contract.balanceOf("0xc5965f591942d77e06e8a992de650d0044034efd");
    

    在这里插入图片描述
    over,enjoy!

    展开全文
  • 许多人在看了以太坊代币开发白皮书之后仍然不清楚以太坊代币开发是怎样实现的,因为以太坊代币开发的源码设计精巧,有许多设计白皮书未曾提及,加上本身以太坊代币开发的文档稀少,加大了新手理解的困难程度 ...
  • Cosmos 费用代币——介绍 Photon

    千次阅读 2019-05-05 09:02:45
    将权益代币与费用代币独立开来 说起 Atom,大家都比较熟悉了。它是 Cosmos 主体的原生权益代币,它的核心效用是作为保护 Cosmos 网络的一个工具,且其基本效用并不来源于作为一种货币用来支付手续费或是价格翻倍。...

    将权益代币与费用代币独立开来

    说起 Atom,大家都比较熟悉了。它是 Cosmos 主体的原生 权益 代币,它的核心效用是作为保护 Cosmos 网络的一个工具,且其基本效用并不来源于作为一种货币用来支付手续费或是价格翻倍。Atom 应该有一个比较低的货币流通速度。 Atom 可以被视为虚拟硬件的一部分,就像工作量证明中的 ASIC 设备(专用计算设备),得到它是为了让一个实体可以作为网络的维护者参与进来。验证者和代表应该受到强烈的激励将他们的 Atom 作为保证金长期抵押;由于他们为 Cosmos 网络提供共识和更大的安全性,他们也将获得奖励。

    但 Photon 是个新事物。 Photon 是一种次级的 费用 代币,也是 Cosmos 主体原生的,其核心效用是用于交易;这是一种比 Atom 更具流动性的代币,货币流动速度必定更高。因此,它被叫做“Photon”——一种被描述为不连续能量包的基本粒子,它可以携带高速的可见光。

    经过广泛的研究,Tendermint 的研究团队确定,这就是我们朝向一种精心设计的、安全的权益证明网络的方式。

    注意:不会有针对 Photon 的公开发售。 Photon 将通过一次以太坊账户状态的硬舀取(Hard Spoon)(译者注:Hard Spoon 是对应 Hard Fork(硬分叉)而言的;意思是从已经存在的链上获取账户的状态,具体见 Cosmos 博客)来分发,也是 Ethermint 的原生货币。

    下面我们走向这种多代币设计决定的推理过程。

    单一代币模式

    大家都知道,以太坊正通过 Casper 从工作量证明模式过渡到权益证明。在 Casper 中,以太坊尝试使用它现有的费用代币(ETH)作为权益代币。

    在单一代币模式中,代币的经济效用是双重的:抵押和交易。这会为代币引入更多的流动性,因为更多的效用被捆绑到了一种代币上,并且为人们抵押他们的代币创造了更少的激励。更让人担心的是,这种更大的流动性会使网络安全性变弱,允许潜在攻击者暗中积累攻击权益证明系统必要的代币数量。

    假设在某种情境下,Casper 在以太坊区块链的 Serenity 版本中实现了;假设一位大腕拥有以太币全部供给的 5%。如果少于全部以太币的 15% 被抵押,这位大腕可以一己之力发动一次 33% 攻击(拜占庭容错的上限)。这种情景并不是不可能发生的,因为以太币的效用比抵押保证金更加宽泛,不幸地是,虽然无心,这会放大网络的安全风险。

    Cosmos 经济学

    结果是, Cosmos 正在部署一个多代币模型, Atom 单纯用于抵押,而 Photon 单纯用于交易支付。因为 Atom 的持有者受到有力的激励将他们的权益代币结合在一起,这将使得上述的攻击情境变得更难发生在 Cosmos 网络中。如果任何人在公开市场上尝试买到获得 33%的权益所要求的 Atom 的数量, Atom 的市场会逐渐变得更不具有流动性,导致每一个连续的 Atom 的价格都变得更加昂贵,显著地提高制造可行的攻击需要付出的成本。

    许多费用代币,一个生态系统

    来自不同网络的交易花费了不同数量的资源,所以,与其使用交易的现货价格计算手续费、再用手续费的绝对数量进行排序,不如用每单位资源的手续费来排序交易,即:每字节 X 聪(译者注:比特币网络的手续费计算方式,“聪”为计价单位)。与其尝试让所有验证者同意每一个代币在每一个区块时候的价格,不如让区块提交者使用他们自己对每一个代币的估价来组织交易,在轮到他们提交区块的时候。

    因为建立一个多代币的生态系统是 Cosmos 网络的核心,而不是仅仅强制用户在使用这个系统是用特定一种代币来支付费用, Cosmos 主体会适应多个可能的白名单代币。

    在启动的时候,首先被加进白名单的两种代币是 Atom 和 Photon 。

    这里阅读 Cosmos 的完整的代币模型。

    Photon:一种多链代币

    就像区块奖励一样,Photon 是奖励给 Cosmos 验证者的。 Photon 可以用来在 Ethermint 空间中支付 “gas” 费用;因 Cosmos 生态系统将它作为费用代币,它也可以用来支付生态系统中任一空间的费用。

    Photon 区块奖励将以每小时 500Photon 的固定比例被铸造出来,这将导致通胀率逐渐地逼近于 0。然而,与其从货币初始供给为 0 起步并将所有的 Photon 给 Cosmos 验证者——这就没法制造一个非常分散的初始分配——我们将为 Cosmos 治理提议一次硬舀取为所有的 Ether 持有者分 Photon,数量与 Ether 的数量相等。

    分发方法

    在以太坊中,大比例的以太币是储存在智能合约比如多签名中的。因为这一点,为了让每一个人都可以要求获得 Photon ,我们需要复制整个以太坊的状态,包括智能和约的状态,到 EVM 里面。我们必须运行叫做 Ethermint 的环境,可以促进这个过程;它会允许任何人挂载一条 EVM 链运行在 Tendermint 共识上。

    这个硬舀取的“Photon 空间”以及 Photon 分发,将是在启动之后迅速连接到 Cosmos 主体的第一批空间中的一个。这一切一旦发生,以太币的持有者可以要求获得 Photon 并将它们转移到 Cosmos 主体、然后注入 Cosmos 生态系统的其它部分。注意,这个 Photon 空间,因为会被以太坊区块链的最新状态塞满,无意被用作一个正常的 Ethermint 空间、用于编写智能合约的目的,只是用户获得 Photon 的一个方法。未来会有另一个“清净”的 Ethermint 空间联系到 Cosmos 主体,用户可以在上面建立智能合约和 DApp。


    原文链接: https://blog.cosmos.network/cosmos-fee-token-introducing-the-photon-8a62b2f51aa
    作者: Tendermint

    展开全文
  • 教你如何在5分钟以太坊上发布自己的代币 该教程可以更好的让你体验以太坊网络 主要步骤: 提示: 1、安装Metamsk插件(申请账号,在测试网中获取一些免费的以太) 2、 写一个实现ERC20协议代币合约的智能合约 3、 ...

    教你如何在5分钟以太坊上发布自己的代币

    该教程可以更好的让你体验以太坊网络


    主要步骤:

    提示:
    1、安装Metamsk插件(申请账号,在测试网中获取一些免费的以太)
    2、 写一个实现ERC20协议代币合约的智能合约
    3、 将合约编译部署到以太坊的网络上(这里部署到Ropsten测试网,有钱的小伙伴可以尝试主网)
    4、将你发布的代币导入钱包中


    1、安装Metamask

    这里省略Metamask的安装和获取免费以太的方法,百度一下就有教程了哦


    2、写一个实现ERC20协议代币合约的智能合约MyToken.sol

    pagma solidity ^0.4.16;
    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 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;
            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;
        }
    }
    

    在remix上编译然后部署到以太坊的测试网络。(这个智能合约版本有点老了,新版本语法有差异,需要新版合约私聊我)
    编译界面

    3、 将合约编译部署到以太坊的网络上

    先编译然后部署,部署的时候要选择web3注入的对象
    在这里插入图片描述

    输入总量、代币名、代币符号点击部署,等待pendding。(需要metamask的交易确认)
    在这里插入图片描述
    等交易确认后,复制箭头指向的合约地址

    3、 将合约编译部署到以太坊的网络上

    打开metamask
    在这里插入图片描述
    添加代币
    在这里插入图片描述
    选择自定义代币,将合约地址输入,他会自动匹配其他信息,点击确认
    在这里插入图片描述
    确认以后就可以领取你发布的Token了
    这一我就可以给别人转我的pig币了
    快来试试吧 !!!!!想要学习更多区块链知识加我微信 :13721072141
    一起学习一起进步

    展开全文
  • 北极星设计令牌 所有平台的颜色,间距,动画和版式 JavaScript·JSON·CSS·SCSS·... 推荐的使用和安装设计令牌的方式可能会因项目而异; 最常见的记录在下面。 使用 : npm install @shopify/polaris-tokens -
  • 教你如何一步步创建ERC20代币

    万次阅读 2018-03-16 23:44:26
    看这篇文章需要对以太坊,智能合约,代币等概念有基本的了解。 什么是ERC20 可以把ERC20简单理解成以太坊上的一个代币协议,所有基于以太坊开发的代币合约都遵守这个协议。遵守这些协议的代币我们可以认为是标准...
  • 一、前言 1、web3.js文档 ... 前面的文章也提到了,使用web3.js可以与以太坊进行...二、使用web3.js查询以太币及代币余额,以及进行以太币和代币转账 1.web3.js版本问题 现在使用npm install web3安装的web3.js,...
  • 发行代币实用教程

    千次阅读 2018-07-24 09:53:58
    代币市场异常火热,你是否也想创建一个自己的代币,开启ICO,迎娶白富美,走上人生巅峰呢?那还犹豫什么,洗洗睡吧! 其实开发一个ERC20标准(以太坊钱包能够识别的标准)的代币很容易,跟着教程走,十分钟搞定! ...
  • 让你了解以太坊这两种协议的基本应用场景,以及结合ERC20,ERC721 的双重代币模型实现。
  • 基于ETH创建自己的代币

    千次阅读 2019-05-31 14:47:02
    发行ETH代币 首先参考该文章 https://ethfans.org/topics/118, 且根据实际操作分享一下 当然首先要同步完区块,然后准备一点ETH(我是准备了0.02个,创建代币手续费+测试转账)。 文章中的: 这个部分所提供的代码...
  • 两种最常见的基于区块链的数字资产是加密货币和代币,两者之间最大的区别是加密货币有自己的区块链,而加密代币建立在现有的区块链上。
  • 以太坊加密猫代币协议剖析

    千人学习 2018-08-02 13:41:21
    以太坊加密猫代币协议剖析视频教程,让你了解以太坊这两种协议的基本应用场景,以及结合ERC20,ERC721 的双重代币模型实现。内容涵盖ERC20 和ERC721 整体介绍、基于ERC20标准在测试链上面发币、ERC721 协议标准的...
  • BAT代币解读

    千次阅读 2017-08-31 10:55:43
    平时Brave用户观看广告、优质内容时,因为花费了注意力,会获得系统中BAT代币形式的奖励,内容商凭借广告和内容成功吸引用户的注意力驻留,系统亦会对内容商进行奖励,用户和内容商获得的BAT代币都是源自广告商。...
  • 九、ERC20代币 1、什么是ERC20 &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;ERC20是以太坊...
  • 本课程是《跟宁哥学区块链开发》的第5套课程,本系列课程包含了区块链和以太坊基础知识、Solidity语言详解、Web3.js和Web3.py详解、Truffle以太坊开发框架、项目实战(包括支持以太坊的微信小程序版记事本、用PyQt5...
  • 本文基于以太坊上的类UniswapV2交易所,通过模拟交易的形式介绍了一种获取SafeMoon类代币转移损耗率的方法
  • 以太坊私链发代币

    千次阅读 2018-06-09 15:04:35
    搭建私链 ... 创建代币智能合约 在solidity contract source code中添加 pragma solidity ^0.4.16; interface tokenRecipient { function receiveApproval(addr...
  • 以太坊分析之 代币

    千次阅读 2018-06-05 17:28:39
     以太坊代币 以太坊代币(Ethereumtokens)是利用以太坊的智能合约编写的数字货币。 代币通常通过ICO进入公众视野。这些代币创建者会通过提供内置代币,来交换以太币、比特币或其他数字资产,比如EO...
  • web3js 监控以太坊代币交易

    千次阅读 2019-09-10 17:47:57
    监控以太坊交易记录,监控以太坊代币交易; 如题: 如何监控以太坊交易记录 一般都是监控代币转账记录; erc20标准的转账 //转账方法 function transfer(address to, uint256 value) public returns (bool); ...
  • 公有链 一代币 安装总结
  • 披露时间线以太坊代币“假充值”漏洞影响面非常之广,影响对象至少包括:相关中心化交易所、中心化钱包、代币合约等。单代币合约,我们的不完全统计就有 3619 份存在“假充值”漏洞风险,其中不乏知名代币。相关项目...
  • 获取ETH指定代币的余额

    千次阅读 2019-06-16 14:33:38
    https://blog.csdn.net/wypeng2010/article/details/81362562 引言 之前的文章介绍了获取eth余额的方法和离线签名的方法(指定代币的离线签名),今天就来介绍一下如何获取满足ERC20协议的代币余额的。 要想获取...
  • 3、上传合约 之后 点击上传合约文件 把上面下载好的合约上传上去,进行编译即可 4、合约编译 合约部署 编译好的合约之后,点击部署 成功部署的结果 这里可能需要一分钟左右 好了 属于你自己的合约 trc20的代币就出来...
  • 作者 |Carol出品 |区块链大本营(blockchain_camp)美国东部时间11月4日~8日,一年一度的微软IT大会Ignite在美国奥兰多举行。作为微软最重要的技术会议之一,每年微软都会在Iginite大会上宣布一系列的产品及服务的...
  • 以太坊 代币转账

    千次阅读 2019-07-11 10:09:11
    以太坊 代币转账 废话不多说直接上代码 代码下载地址 https://download.csdn.net/download/u012841825/11021920 github代码 用你们可爱的小手 点一下星星 https://github.com/zcJun/php-eth <?php /** ...
  • [GO]以太坊代币转账

    2019-05-07 20:17:52
    以太坊代币转账代码 代码 //私钥,要转往的地址,数量(ether),代币地址,请求的以太坊节点地址(https://mainnet.infura.io),gasprice func SignTokenTx(privateKey, toAddress, value, tokenAddress, ethNet ,...
  • Erc20Tokens数据集包含超过1000种主流的以太坊ERC20代币的描述数据清单和图标,可用于钱包等区块链应用的开发,支持使用Java、Python、Php、NodeJs、C#等...下载链接:ERC20代币数据集。 1、数据集概述 以下是ERC2...
  • 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本...把合约代码复制到编辑器中(这里用我的上一个博客的ERC20高级代币源码) Start to compile编译合约代码、如果没有报错就可以..

空空如也

空空如也

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

csdn代币8代推荐