当前位置:网站首页>浅谈泰山众筹系统开发技术说明及dapp链上众筹系统开发分析
浅谈泰山众筹系统开发技术说明及dapp链上众筹系统开发分析
2022-08-10 16:51:00 【I357O98O7I8】
什么是DAPP
根据David Johnston在文章DavidJohnstonCEO/DecentralizedApplications里的定义,只有当满足以下所有条件时,一个应用才可以称之为DAPP。
应用必须完全开源、自治并且没有一个实体控制着该应用的大部分代币(Token)。该应用必须能够根据市场的反馈及技术要求进行升级,但是升级必须由应用的用户达成共识之后才可以进行;
应用的数据必须加密后存储在公开的区块链上;
应用必须拥有代币机制(可以使用已存在的代币或者新发行一种内置代币),矿工或者应用维护节点需要得到代币奖励;
应用代币的产生必须依据标准的加密算法,有价值的节点可以根据该算法获取应用的代币奖励。
泰山众筹的基本概念
1、四进一出:当众筹活动到第四期成功的时候,第一期参与众筹的粉丝就会出局,从而获的奖励,当第五期众筹成功的时候,第二期参与的粉丝出局,获得出局奖励,以此类推,直至众筹活动结束或失败。
2、倍利复增:每完成一期众筹活动的时候,下一期将增长30%的众筹资产
3、爆仓重生:众筹活动时间内,无法完成众筹,则会众筹失败,那就视为爆仓,将重新开启第一期循环。
与from表单交互
定义表单项的onchange事件函数,该函数把表单项的值设置到状态变量中
handleChange=(e,{name,value})=>this.setState({[name]:value})
然后写一个函数来看看是否触发了按钮:
handleCreate=()=>{
let{active,projectName,targetMoney,supportMoney,duration}=this.state
console.log('projectName:',projectName)
console.log('targetMoney:',supportMoney)
}
定义表单提交函数
handleCreate=async()=>{
let{active,projectName,targetMoney,supportMoney,duration}=this.state
console.log('projectName:',projectName)
console.log('targetMoney:',supportMoney)
this.setState({active:true})
try{
let res=await createFunding(projectName,targetMoney,supportMoney,duration)
alert('创建合约成功!n')
this.setState({active:false})
}catch(e){
this.setState({active:false})
console.log(e)
}
}
在interaction.js文件中定义createFunding方法,并导出该方法。
let createFunding=(projectName,targetMoney,supportMoney,duration)=>{
return new Promise(async(resolve,reject)=>{
try{//调用创建方法
let accounts=await web3.eth.getAccounts()
let res=await fundingFactoryInstance.methods.createFunding(projectName,targetMoney,supportMoney,duration).send({
from:accounts[0],
})
resolve(res)
}catch(e){
reject(e)
}
})
}
5.在AllFundingTab添加表单项,在render方法中把状态变量的数据结构出来
render(){
return(
<div>
<CardList details={this.state.allFundingDetails}/>
<div>
<h3>参与众筹</h3>
<Dimmer.Dimmable as={Segment} dimmed={this.state.active}>
<Dimmer active={this.state.active} inverted>
<Loader>支持中</Loader>
</Dimmer>
<Form onSubmit={this.handleInvest}>
<Form.Input type='text' value={''} label='项目名称:'/>
<Form.Input type='text' value={''} label='项目地址:'/>
<Form.Input type='text' value={''} label='支持金额:'
labelPosition='left'>
<Label basic>¥</Label>
<input/>
</Form.Input>
<Form.Button primary content='参与众筹'/>
</Form>
</Dimmer.Dimmable>
</div>
</div>
)
}
边栏推荐
猜你喜欢

v-show指令:切换元素的显示与隐藏

v-for指令:根据数据生成列表结构

《安富莱嵌入式周报》第277期:业界首款Cortex-M55+Ethos-U55 NPU套件发布,20个墨水屏菊花链玩法,氙气灯镇流器设计

建筑施工员证怎么考?报名条件及报考时间是什么?

mysql定义存储过程

#夏日挑战赛#【ELT.ZIP】啃论文俱乐部——学术科研方法论沉淀辑

3 年 CRUD 从 8K 涨到 28K,谁知道这4个月我到底经历了什么?

找到一个超级神奇,百试百灵的解决 ModuleNotFoundError: No module named xxx 的方法

Meaning of CDF graph

Embedded Development: Embedded Basics - Mapping Peripherals Using Arrays of Pointers
随机推荐
RMAN-08120的处理
奥迪的极致高端属于一个大写的H?重塑时空,谁会是这个夜晚的主角?
How to generate code using the Swift Package plugin
如何使用Swift Package插件生成代码
unr #6day1 T2题解
leetcode:339 嵌套列表权重和
glut库更新旧程序无法完成编译问题描述
How to realize full backup and incremental backup of MySQL database
C:枚举的优缺
程序员兼职踩到的坑,本人亲身经历
年薪60万+?这份10万字的面试突击宝典涵盖阿里 P5 工程师~P7 所有技术栈
为什么某互联网企业开200w年薪大家都支持,但是中金开100w年薪大家都在骂?...
glui.h无法找到描述+解决+测试
聊聊云原生数据平台
8.9模拟赛总结
JWT 实现登录认证 + Token 自动续期方案
【JDK】Oracle又一个JDK大版本停止扩展技术支持
取Json中的数组进行遍历
还在用 Xshell?你 out 了,推荐一个更现代的终端连接工具,好用到爆!
sprintboot验证码kaptcha 自定义图片样式