浅谈泰山众筹系统开发技术说明及dapp链上众筹系统开发分析

2022-08-10 16:23:23 浏览数 (1)

什么是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>

)

}

0 人点赞