贵州做网站公司
贵州做网站公司~专业!靠谱!
10年网站模板开发经验,熟悉国内外开源网站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等网站程序,可为您提供网站建设,网站克隆,仿站,网页设计,网站制作,网站推广优化等服务。我们专注高端营销型网站,企业官网,集团官网,自适应网站,手机网站,网络营销,网站优化,网站服务器环境搭建以及托管运维等。为客户提供一站式网站解决方案!!!

合约众筹(以太坊众筹智能合约怎么实现)

来源:网络转载 时间:2024-05-06 19:14:00

实现一个好的idea常常需要付出巨大的努力,并且需要大量的资金。我们可以寻求用户捐赠,或者寻求投资机构投资,但这往往很难。对于捐赠,国内的风气不太好,资金去向往往不了了之,捐赠者对于当前的捐赠形式早已失去了信心。而风险投资,对于没有人脉的创业者来说,非常困难。 区块链提供了一种众筹的新形式——众筹智能合约。募资人通过众筹合约设定好众筹目标,以及完成时间,设定不同众筹结果所对应的操作(例如目标失败退回全款、目标成功时受益人获得加密代币或eth)。由于区块链不可篡改的特性,众筹合约会是一个非常吻合的应用场景。

代币和分布自治组织

这个例子中我们将通过解决两个重要的问题进行更好的众筹:

  • 如何管理资金,保证流动性;

  • 筹集资金后如何花钱。

区块链出现之前的众筹项目一般缺少流动性,投资人一旦错过众筹截止时间将无法参与众筹;一旦参与众筹,投资人也不能中途退出。智能合约通过发行代币的形式来记录投资额,并提供了类似股票市场的流动性。投资人可以选择交易或者继续持有。项目成功后投资者可以使用代币交换实物或者产品服务。项目失败的话投资者可以按照原先的约定退出,并且继续持有代币以表纪念。

同样,当前众筹项目也存在资金去向不明的问题。在这个项目中,我们使用DAO(分布式自治组织)记录每一笔资金去向。

合约代码

先放上代码,然后再一步步解读。

pragmasolidity^0.4.16;interfacetoken{functiontransfer(addressreceiver,uintamount);}contractCrowdsale{addresspublicbeneficiary;uintpublicfundingGoal;uintpublicamountRaised;uintpublicdeadline;uintpublicprice;tokenpublictokenReward;mapping(address=>uint256)publicbalanceOf;boolfundingGoalReached=false;boolcrowdsaleClosed=false;eventGoalReached(addressrecipient,uinttotalAmountRaised);eventFundTransfer(addressbacker,uintamount,boolisContribution);/***Constrctorfunction**Setuptheowner*/functionCrowdsale(addressifSuccessfulSendTo,uintfundingGoalInEthers,uintdurationInMinutes,uintetherCostOfEachToken,addressaddressOfTokenUsedAsReward){beneficiary=ifSuccessfulSendTo;fundingGoal=fundingGoalInEthers*1ether;deadline=now+durationInMinutes*1minutes;price=etherCostOfEachToken*1ether;tokenReward=token(addressOfTokenUsedAsReward);}/***Fallbackfunction**Thefunctionwithoutnameisthedefaultfunctionthatiscalledwheneveranyonesendsfundstoacontract*/function()payable{require(!crowdsaleClosed);uintamount=msg.value;balanceOf[msg.sender]+=amount;amountRaised+=amount;tokenReward.transfer(msg.sender,amount/price);FundTransfer(msg.sender,amount,true);}modifierafterDeadline(){if(now>=deadline)_;}/***Checkifgoalwasreached**Checksifthegoalortimelimithasbeenreachedandendsthecampaign*/functioncheckGoalReached()afterDeadline{if(amountRaised>=fundingGoal){fundingGoalReached=true;GoalReached(beneficiary,amountRaised);}crowdsaleClosed=true;}/***Withdrawthefunds**Checkstoseeifgoalortimelimithasbeenreached,andifso,andthefundinggoalwasreached,*sendstheentireamounttothebeneficiary.Ifgoalwasnotreached,eachcontributorcanwithdraw*theamounttheycontributed.*/functionsafeWithdrawal()afterDeadline{if(!fundingGoalReached){uintamount=balanceOf[msg.sender];balanceOf[msg.sender]=0;if(amount>0){if(msg.sender.send(amount)){FundTransfer(msg.sender,amount,false);}else{balanceOf[msg.sender]=amount;}}}if(fundingGoalReached&&beneficiary==msg.sender){if(beneficiary.send(amountRaised)){FundTransfer(beneficiary,amountRaised,false);}else{//Ifwefailtosendthefundstobeneficiary,unlockfundersbalancefundingGoalReached=false;}}}}

构造函数中

fundingGoal=fundingGoalInEthers*1ether;deadline=now+durationInMinutes*1minutes;

ether和minutes是以太坊预留的关键字,1 ether == 1000 finney , 2 days == 48 hours。日期类型的关键字有seconds,minutes,hours, days,weeks,years,以太币单位预留的关键字有wei,finney,szabo,ether。1 finney == 1000 szabo,1 szabo == 10^12 wei。now也是以太坊预留的关键字,代表当前时间。

接下来我们实例化了一个合约:

tokenReward=token(addressOfTokenUsedAsReward);token的定义在代码开头:interfacetoken{functiontransfer(addressreceiver,uintamount){}}

这里我们并未实现token合约,只是告诉编译器我们的token是一个合约,具有一个transfer()函数,并且在给定的地址上有这个合约。

接下来我们看看合约如何接收资金,相关代码如下:

function(){require(!crowdsaleClosed);uintamount=msg.value;//...

这个函数很特别,它没有名字,在solidity中我们称之为回退函数(Fallback function),回退函数没有参数,也没有返回值。如果合约接收ether,则必须明确定义回退函数,否则会触发异常,并返回ether。接收ether的函数必须带有关键字payable,否则会报错。

require语句先判断众筹是否结束,如果众筹已经结束,钱将退回给主叫方,避免主叫方出现不必要的损失。

部署通过之后可以用自己的测试账户向合约地址转账,这样就可以参与众筹了。

众筹成功后,如果继续往合约地址转账,钱将会退回你的账户。

到此,相信大家对“以太坊众筹智能合约怎么实现”有了更深的了解,不妨来实际操作一番吧!这里是本站网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

标签:合约众筹-

抖音(Tiktok)是由北京字节跳动科技有限公司(ByteDance)孵化的音乐创意短视频社交网站。它于2016年9月20日上线,主要面向全年龄段的用户,尤其是...

飞极速为您提供高清在线电影、电视剧大全、动画片,综艺等,飞极速在线更新及时,播放速度快,给您带来最好的观影体验!飞极速在线,免费提供日本新番动漫、最新电影和最新...

《南华早报》(英语:South China Morning Post, SCMP)和星期日出版的《星期日南华早报》(英语:Sunday Morning Post...

新股定价高的原因是什么?1、过去新股发行长期形成的“新股不败”现象,让投资者对注册制新股高价发行所带来的破发风险认识不足,尽管注册制新股发行出现了上市首日破发的现象,但投资者仍心存侥幸,认为自己中签的新股不会破发,还是选择踊跃打新,导致新股发行始终处于供不应求状态,新股发行价也因此而走高。2、市值配售打新方式带来的负面影响。取消了23倍市盈率限制后,市值配售不再是投资者的福...

不管城市大小,总会有很多临时工聚集的地方,一些自发找工作的人形成一个地方,每天都在那里招各种各样的工人服务,大部分都是临时工的工作。其实这种方式属于传统的找工作方式,那么温州有几个劳务市场?温州劳务市场在什么地方呢?地方1.谢池巷劳动力市场,就在开太百货商店后面。地方2.牛山客运中心是劳动力市场的专业机构。它就在牛山客运中心的对面。地方3.温州银苑人才市场,位于锦绣路和吴桥路,的交叉口,利府花园对...

四通一达是圆通快递、中通快递、申通快递和百世汇通,其中的圆通快递成立于2000年,属于邮政行业的民营公司,而中通快递2002年在上海成立,是一家集快递、物流一体的集团公司,另外申通快递又称上海申通,属于国内合资企业。四通一达分别指哪四通1、圆通快递四通一达有圆通快递,圆通快递快递成立于2000年,属于-家邮政行业的民营公司,其总部位于上海青浦区,国内大型民营快递品牌,并致力于成为引|领行业发展的公...

TOP