主页 > imtoken有usdt钱包地址吗 > 【黑马程序员】基于以太坊私链的代币发行与交易

【黑马程序员】基于以太坊私链的代币发行与交易

imtoken有usdt钱包地址吗 2023-02-11 05:56:42

11 【黑马程序员】基于以太坊私链Token发布与交易 Based on Ethereum Private Chain Token Release 1.前言 1.1 入门知识 以太坊私链环境搭建ﻫMist钱包安装与使用 1.2环境介绍Mist钱包ﻫgeth---(版本: 1.7.2) 搭建以太坊私链 2. 以太坊代币(Token) ﻫ2.1 介绍ﻫ 如果不追求精确的定义,代币就是数字货币,可以定义比特币和以太坊代币。 以太坊代币是基于以太坊智能合约编写并发行给以太坊虚拟机的合约数字货币。 代币可以代表任何可以交易的东西,比如积分、财产、证书等。使用以太坊智能合约很容易实现自己的代币,因为以太坊提供了开发代币的ERC20标准。 ﻫ2.2 标准代币ERC20 TokenﻫERC20和代币经常一起出现,ERC20是以太坊定义的代币标准。 实现代币时需要我们遵守的协议,比如指定代币名称、总量、实现代币交易功能等,只有协议支持,以太坊钱包才能支持,让你的代币有交易和流通能力。 目前ERC20还有一些无法解决的问题,但是新标准ERC223已经诞生,但是市面上的以太坊代币大多采用ERC20标准,所以本文也使用ERC20标准来实现自己的代码,最后将对ERC20存在的问题进行说明,下面稍微说明一下,然后进入正题。

ﻫ三、代币合约ﻫ3.1ERC20的标准接口contractERC20functionname()constantreturns(stringname)functionsymbol()constantreturns(stringsymbol)ﻫfunctiondecimals()constantreturns(uint8decimals)functiontotalSupply()constantreturns(uinttotalSupply);functionbalanceOf(address_owner)constantreturns(uintbalance); ﻫfunctiontransfer(addressuint_value)eturns(boolsuccess);ﻫfunctiontransferFrom(addres_from,addressuint_value)returns(boolsuccess);11functionapprove(address_spender,uint_value)returnsoolsuccess);ﻫfunctionallowance(address_owner,address_spender)constantreturns(uintremaining);eventTransfer(addressindexed_from,addressindexeduint_value);eventApproval(addressindexed_owner ,addressindexed_spender,uint_value);ﻫ接口代码说明:ﻫname()ﻫ返回ERC20代币的名称,如“Mytesttoken”。

symbol()ﻫ 返回代币的缩写如何在以太坊上获得私链代币,例如:MTT,这也是我们在代币交易所中经常看到的名称。 ﻫdecimals()ﻫ 返回令牌使用的小数位数。 例如设置为3,则支持0.001表示。 ﻫtotalSupply() 返回token的总供应量 ﻫbalanceOf() ﻫ返回一个地址(account)的账户余额 ﻫtransfer() ﻫ从token合约的调用地址向to地址转入价值token的数量,必须触发Transfer事件。 transferFrom() ﻫ transferFrom 方法用于允许合约委托某人转移代币。 前提是委托人调用approve方法让委托人自己设置操作多少代币。 ()ﻫ委托人自己设置代理操作多少代币ﻫApprove改变委托人设置代理操作多少代币,必须触发Approval事件Transfer事件ﻫ转移代币时触发该事件,并记录转账日志。 ﻫ调用approve方法时触发Approval事件,记录授权日志。 注:以上ERC20标准代币接口方法只是标准的,并不是所有的方法都需要实现,当然我们也可以根据自己的业务增强自己的代币,比如实现代币管理等功能的高级代币,代币发行、代币兑换、资产冻结、Gas自动补给 3.2 Token合约实现pragmasolidity^0.4.16; ,uint256_value, address_token, bytes_extraData) public; contractTokenERC20 string publicname; //代币名称ﻫpublicsymbol; //token的缩写ﻫuint8publicdecimalsdecimals可以有最小的十进制数。

18是建议的默认值ﻫuint256publictotalSupply;//token的总数用mapping保存每个地址对应的余额ﻫmappinguint256)publicbalanceOf;ﻫmapping(addressmapping(addressublicallowance;事件,用来通知客户端交易发生ﻫeventTransfer(addressindexedfrom,addressindexeduint256value);ﻫ事件,用来通知客户端代币被消费ﻫeventBurn(addressindexedrom,uint256value);ﻫfunctionTokenERC20(uint256itialSupply,stringtokenName,stringtokenSymbol)publiuint256(decimals);decimals。ﻫbalanceOf[msg.sender]totalSupply;创建者拥有所有的代币ﻫnametokenName;代币名称ﻫsymbolfunction_transfer(address_from,addressuint_value)internal确保目标地址不为0x0,因为0x0地址代表销毁require(_to确保转移为正数个ﻫrequire(balanceOf[_to]uintpreviousBalancesbalanceOf[_to];SubtractfromsenderbalanceOf[_from]recipientﻫbalanceOf[_to]_value ;Transfer(_from,使用assert检查代码逻辑。

ﻫassert(balanceOf[_from] 从您自己的(创建的交易者)账户发送 `_value` 代币到 `_to` 账户 ﻫ @param_value 转账金额 ﻫ functiontransfer(address uint256_value) public rom sender address ﻫ @param_valueFuntr transfer amount ﻫa functrion (address _from, adressUint256_Value)public publy f retun force)成功(_vAlue checkallow ceallowance ﻫ币@param_spender The address authorized @param_value maxamount canspendﻫ functionapprove(address _spender, uint256 _value) ublicreturns (bool success) allowance[msg.sender][_spender] _value;ﻫreturn true;ﻫ 设置允许一个地址(合约)以The maximum number of可以代表我(创建交易者)使用的代币。

@param_spender 被授权的地址(合约)ﻫ @param_value 最大可花费代币数ﻫ @param_extraData 发送给合约的附加数据ﻫ functionapproveAndCall(address _spender, 11uint256 _value, bytes _extraData)ﻫ publicﻫ returns (bool success) tokenRecipientspender (approve( _spender,_value)) 通知合约spender.receiveApproval(msg.sender, _value, _extraData);return true;ﻫ urn(uint256_value) public returns (bool success) senderhas enoughﻫ balanceOf[msg.sender] Subtractfrom senderﻫtotal Supply UpdatestotalSup plyﻫ Burn(msg .sender, _value);ﻫ return true; Remove`_value` tokens from systemirreve rsibly @param_fr om @param_value functionburnFrom(address _from, uint256 _value) public returns (bool success) targetedbalance noughﻫrequire(_value allowance[_from][msg.sender] ); Checkallowance balanceOf[_from] Subtract from targetedbalanceﻫ allowance[_ from][msg.sender] Subtractfrom 11nder´s allowance totalSupply Update totalSupplyﻫ Burn(_from, _value);ﻫ return 四、部署ﻫ采用以太坊钱包mist+geth 私有环境部署以太Fang私链搭建及安装使用 mist钱包的请自行学习 4.1 启动私链 4.2 创建新账户 4.3 挖矿挖矿:挖矿可以获得私链的以太币,因为我们需要部署我们上面写的token合约需要消耗gas,以及gas是对应的以太坊。

默认使用第一个账户进行挖矿,在控制台输入如下图:miner。 start()开始挖矿 4.4 打开Mist钱包,连接私链 4.5 合约部署 点击【CONTRACTS】进入合约部署界面 点击【DEPLOYNEW CONTRACT】开始部署新合约 点击底部【DEPLOY】弹出如下窗口(一定要在geth控制台执行miner.start(1)开始挖矿 5、测试Token点击【主账户】进入账户界面点击【TransferEther】点击最下方的【发送】输入密码在弹出框中,等待挖矿成功后,出现如下界面 11 当然也可以在代币合约主页面测试相关方法,接收方为合约,此时用户必须使用approve+transferFrom函数转账;另一种是当接收方为合约外账户(例如钱包地址)时,用户需要通过transfer函数转账,如果用户使用transfer转账到c 合同地址如何在以太坊上获得私链代币,令牌将丢失。 据了解,由于投资者的无心操作,以太坊生态中的Golem代币仍有93644.51美元的代币。 而合约地址的丢失将导致这些代币的永久丢失。 因此,ERC223诞生了。 请读者学习相关介绍! 和一个简单的传输测试。 区块链技术目前非常火爆,区块链技术还不成熟,但相信未来区块链在互联网中的地位绝对不容小觑。 希望这篇文章能对读者有所帮助。 相互学习 相互探讨 不断研究