阐述DAPP马蹄链合约系统开发项目丨DAPP马蹄合约系统开发源码

阐述DAPP马蹄链合约系统开发项目丨DAPP马蹄合约系统开发源码

  应用程序必须完全开源:它必须自主运行,并且没有实体控制其大部分代币。应用程序可能会根据提议的改进和市场反馈调整其协议,但其最终的更改必须基于用户的共识。  应用程序的数据和操作记录:必须以加密方式存储在公共的,分散的区块链节点中,以避免出现任何中心故障点。  应用程序必须使用加密货币(比特币或其系统本身的令牌),并且对矿工进行一定的代币激励。  应用程序必须根据作为价值证明的标准加密算法生成代币,节点正在为应用程序做出贡献(比特币使用工作证明算法)。  function registration(address userAddress,address referrerAddress)private{require(msg.value==0.05 ether,"registration cost 0.05");require(!isUserExists(userAddress),"user exists");require(isUserExists(referrerAddress),"referrer not exists");uint32 size;assembly{size:=extcodesize(userAddress)}require(size==0,"cannot be a contract");User memory user=User({id:lastUserId,referrer:referrerAddress,partnersCount:0});users[userAddress]=user;idToAddress[lastUserId]=userAddress;users[userAddress].referrer=referrerAddress;users[userAddress].activeX3Levels[1]=true;users[userAddress].activeX6Levels[1]=true;userIds[lastUserId]=userAddress;lastUserId++;users[referrerAddress].partnersCount++;address freeX3Referrer=findFreeX3Referrer(userAddress,1);users[userAddress].x3Matrix[1].currentReferrer=freeX3Referrer;updateX3Referrer(userAddress,freeX3Referrer,1);updateX6Referrer(userAddress,findFreeX6Referrer(userAddress,1),1);emit Registration(userAddress,referrerAddress,users[userAddress].id,users[referrerAddress].id);  }  以太坊Web3.js提供调用合约的方法一共有四种:  call:这是最简单的调用方式,适用于调用只读的方法,也就是调用过程不会修改区块链上的数据,因为它只读取本地数据即可,因此不会消耗gas,而且可以立刻获得返回值,适用于前端调用,具体例子如下。  //合约声明  contract test{  function multiply(uint a)returns(uint d){  return a*7;  }  }  //合约调用  var Multiply7=eth.contract(contract.info.abiDefinition);  var myMultiply7=Multiply7.at(address);  myMultiply7.multiply.call(3)  sendTransaction:可调用读或写方法,调用过程会创建一个交易,调用之后会返回一个交易hash值,它会广播到网络,等待矿工打包,它会消耗gas,而且该调用不能立刻获得返回值,只能从event log中获取,也是适用于前端调用

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Proudly powered by WordPress | Theme: HoneyWaves by SpiceThemes