私募网站源码分享怎么弄 私募网站源码分享怎么弄出来

大家好,感谢邀请,今天来为大家分享一下私募网站源码分享怎么弄的问题,以及和私募网站源码分享怎么弄出来的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!

2017年-2018年,币圈可谓风光无限,许多初创公司都以区块链噱头,通过ICO募集了大量的资金,主要是以ETH作为资金募集来源。但是自从18年下半年开始,政府部门的监管加大,币价急剧下降,纷纷跳水90%以上,80-90%的区块链公司已经纷纷倒闭,幸存下来的公司也是勒紧裤腰带过日子。

现在,给大家分享一个发币过来的源码教程,旨在研究学习用途。完整例子可以在Github上可以找到。https://github.com/cxbl1230/moyierc20

示例图如下所示.

ERC20Token

ERC20和代币一同出现,ERC20是以太坊定义的一个代币标准。是一种发行代币合约必须要遵守的协议,该协议规定了几个参数——发行货币的名称,简称,发行量,要支持的函数等,只有支持了该协议才会被以太坊所认同。

ERC20标准代码如下

contractToken{\nuint256publictotalSupply;//总供应量\nfunctionbalanceOf(address_owner)internalreturns(uint256balance);\nfunctiontransfer(address_to,uint256_value)externalreturns(boolsuccess);\nfunctiontransferFrom(address_from,address_to,uint256_value)externalreturns(boolsuccess);\nfunctionapprove(address_spender,uint256_value)externalreturns(boolsuccess);\nfunctionallowance(address_owner,address_spender)externalreturns(uint256remaining);\neventTransfer(addressindexed_from,addressindexed_to,uint256_value);\neventApproval(addressindexed_owner,addressindexed_spender,uint256_value);\n}\n\n

totalSupply:代表的是代币发行总量totalSupply():该方法可以返回代币的总数量name:发行代币的名称dicimals:发行代币以后,代币交易的最小单位balanceOf():该方法返回的是输入钱包地址后,该钱包的代币余额tansferFrom():从一个地址向另一个地址发送余额approve():允许_spender从你的账户转出_value余额allowance():允许_spender从你的账户转出_value的余额,调用多次会覆盖可用量。某些DEX功能需要此功能eventTransfer():token转移完成后出发eventApproval():approve(address_spender,uint256_value)调用后触发

我们定义了一个给外部调用合约MyToken,主要是与web3进行交互.它继承了SafeMath、StandardToken,防止整型溢出等可能会引起的合约安全的合约。

stringpublicname;//代币名称\nstringpublicsymbol;//代币符号\nuint256publicdecimals;//小数点后位数\nuint256publicconstanttotal=1024000000;//总供应量,eg.1024W,10亿2千4百万\nstringpublicversion=”1.0″;\n\n//contracts\naddresspublicethFundDeposit=0x76B7d9f1d76f60dB46345C4DFcD57FfB45C59e0c;//ETH存放地址\naddresspublicnewContractAddr;//token更新地址\n\n//crowdsaleparameters\nboolpublicisFunding;//状态切换到true\nuint256publicfundingStartBlock;\nuint256publicfundingStopBlock;\n\nuint256publiccurrentSupply;//正在售卖中的tokens数量\nuint256publictokenRaised=0;//总的售卖数量token\nuint256publictokenMigrated=0;//总的已经交易的token\nuint256publictokenExchangeRate=10000;//1ETH=(n)个代币,兑换率\n\n

我们预设合约提现的地址0x76B7d9f1d76f60dB46345C4DFcD57FfB45C59e0c,该地址后期如果变更可通过交互进行修改。发行总量total=1024000000,这个总量不是变的,明明白白写在合约(合同)里.

代币名称与代币符号及精确小数的位置可以通过部署合约时填写。isFunding、fundingStartBlock、fundingStopBlock控制此次代币私募的开始结束,是通过区块号来控制。

因为代币的构成,一般是由小数后面多位决定精度,会有0.000001个代币。所以,对初始代币的发行量及流通量,都要先进行精度的转换。

functionformatDecimals(uint256_value)internalviewreturns(uint256){\nreturn_value*10**decimals;\n}\n\n

调用方法如

currentSupply=formatDecimals(_supply);

totalSupply=formatDecimals(total);

币圈的疯狂你绝对想不到,如果私募中提前把流通的币发售完毕或需要中止发行或销毁,我们用2个函数来处理:

///@dev超发token处理\nfunctionincreaseSupply(uint256_value)isOwnerexternal{\nuint256value=formatDecimals(_value);\nrequire(value+currentSupply<=totalSupply);\ncurrentSupply=safeAdd(currentSupply,value);\n///emiteventlog\nemitIncreaseSupply(value);\n}\n\n///@dev被盗token处理\nfunctiondecreaseSupply(uint256_value)isOwnerexternal{\nuint256value=formatDecimals(_value);\nrequire(value+tokenRaised<=currentSupply);\n\ncurrentSupply=safeSubtract(currentSupply,value);\nemitDecreaseSupply(value);\n}\n\n

综述,此合约创建的代币,具有“交易”,“转账”,“异常检测”,“更改代币持有人”,“设置汇率”,“被盗处理”,“超发代币”等功能。

通过truffle将合约布署到测试网络上

>trufflecompile–all\n>trufflemigrate–reset\n\n

这时合约地址是0x0e9c86de934ab71375d52d25f4534aa75c915c46,与web3交互里需要用到.

接下来,我们编写web3交互测试代码,是通过HttpProvider进行交互。

通过设置“启动私募”,开启成功后,刷新页面,就会自动显示“结束私募”字样,说明已经成功了.

这里,要注意,合约里的ethFundDeposit要设置成metamask第一个账号地址,以免得搞混了。

切换第二账号,我来购买10eth。

再次购买1eth,如下

刷新当页面,已经正确显示合约当前eth余额。

究竟,我们账号里有多少个MYI代币呢,我们来查询一下,在地址栏输入我的账号查询可知

可见,能正解显示我的MYI代币数量。

此例子只展示最简单核心操作,其它功能小伙伴们可以在此基础上扩展。完整代码在Github上可找到。

本文为墨蚁原创文章,转载须标明出处。

好了,文章到此结束,希望可以帮助到大家。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平