智能合约Dapp项目如何开发构建?智能合约开发源码示例

184 阅读3分钟

     智能合约的工作原理:      智能合约包括三个步骤:      第一步是智能合约的构建,智能合约怎么构建的?智能合约由区块链的多个用户共同参与制定一份智能合约。      第二部分是智能合约的存储,智能合约通过 P2P 网络扩散到每个节点,并存入区块链。开发唯wwqqyy420      第三部分是智能合约的执行,智能合约定期进行自动机状态检查,将满足条件的事物进行验证,达成共识后自动执行并通知用户。      DApp是去中心化应用的缩写,也是去中心化应用。      从某种程度上来说,比特币可以说是第一个出现的 DAPP,因为它是完全开源的,为贡献者提供奖励,不受一个中央机构的控制,使用区块链作为支撑技术。      区块链作为一个基础设施,提供了一个分布式去中心化的可信数据库。基于此,人们可以针对不同的场景开发各种应用。      简单来说, DApp和普通 App的原理是一样的,只不过它们是完全去中心化的。 DAPP像以太坊网络本身一样由自己的节点运营,不依赖于任何集中式服务器。 DAPP是去中心化的,可以完全自动运行。      目前, DApp通常是指在以太坊或 EOS上基于智能合约开发的相关应用。 DAPP是 Decentralized Application的缩写,即去中心化应用,也有人称为分布式应用。它被认为开启了区块链 3.0时代。      由于区块链上的交易具有可追溯、抗篡改、不可逆转的特性,使智能合约在 没有第三方中间人的情况下,也可以进行安全的交易。也就是说,区块链提供了 在不可信环境下进行可信交易的基础环境,这才使得自动化执行的智能合约 得以落地。而以太坊由于内置了虚拟机和开发语言,这使得在以太坊区块链上开发智能合约 的效率大大提高、难度大大降低。因此,现在提到智能合约,基本上大家说的都是以太坊上的智能合约。      智能合约 Dapp 项目开发的应用场景:      智能合约可应用于许多领域,如选举、物流、管理、银行系统、保险、房地产和物联网。区块链上的数据是加密和匿名的,这可以减少操纵投票的可能性,对改进投票机制非常有帮助。此外,对于物联网漫长而复杂的供应链,通过智能合约,链中的每个参与者都可以看到物流跟踪,使交易更快、更高效。      智能合约开发代码 示例:      pragma solidity ^0.4.16;      interface token {      function transfer(address receiver, uint amount);      }      contract Crowdsale {      address public beneficiary;      uint public fundingGoal;      uint public amountRaised;      uint public deadline;      uint public price;      token public tokenReward;      mapping(address => uint256) public balanceOf;      bool fundingGoalReached = false;      bool crowdsaleClosed = false;      event GoalReached(address recipient, uint totalAmountRaised);      event FundTransfer(address backer, uint amount, bool isContribution);      /** * Constrctor function * * Setup the owner /      function Crowdsale(      address ifSuccessfulSendTo,      uint fundingGoalInEthers,      uint durationInMinutes,      uint etherCostOfEachToken,      address addressOfTokenUsedAsReward      ) {      beneficiary = ifSuccessfulSendTo;      fundingGoal = fundingGoalInEthers * 1 ether;      deadline = now + durationInMinutes * 1 minutes;      price = etherCostOfEachToken * 1 ether;      tokenReward = token(addressOfTokenUsedAsReward);      }      /* * Fallback function * * The function without name is the default function that is called whenever anyone sends funds to a contract */      function () payable {      require(!crowdsaleClosed);      uint amount = msg.value;      balanceOf[msg.sender] += amount;      amountRaised += amount;      tokenReward.transfer(msg.sender, amount / price);      FundTransfer(msg.sender, amount, true);      }      modifier afterDeadline() {      if (now >= deadline) _;      }