ITPub博客

首页 > 区块链 > 区块链 > 阐述“区块链系统开发”项目方案

阐述“区块链系统开发”项目方案

原创 区块链 作者:Tg_StPv888 时间:2023-03-30 14:05:31 0 删除 编辑

  区块链是一个不可变的记录链,称为块,可促进交Y,有助于跟踪Z产并记录数据和文件,其具有去中心化、不可篡改、全程留痕、集体维护、公开透明等特点,基于这些特点,区块链技术可以开√发出自带信任体系特征的系统,实现多个主体之间的协作信任与一致行动。


  在这次的实战演练中,我们将介绍如何让你的智能合约连接到Twitter API。具体来说,我们将解释如何从智能合约中发出一条推文,但是围绕社交媒体进行数据分析和智能合约的执行所展示出来的可能性却是无限的。


  构造函数


  pragma solidity^0.6.12;


  import"https://github.com/smartcontractkit/chainlink/evm-contracts/src/v0.6/ChainlinkClient.sol";


  contract ChainlinkTwitter is ChainlinkClient{


  address private oracle;


  bytes32 private jobId;


  uint256 private fee;


  uint256 public statusCode;


  //only the contract owner should be able to tweet


  address payable owner;


  modifier onlyOwner{


  require(msg.sender==owner);


  _;


  }


  constructor()public{


  setPublicChainlinkToken();


  oracle=0x4CF0507fe3236DedDbE6cD18508f35D9b5e16e7C;//oracle address


  jobId="948db03c9576480a8fa0545bee5b28ab";//job id


  fee=11*10**17;//1.1 LINK


  owner=msg.sender;


  }


  我们从熟悉的ChainlinkClient导入和继承开始。导入ChainlinkClient合约包含了构建请求、提交给一个或多个Chainlink节点,并接收回复所需的所有功能。只需定义你选择的oracle地址,该节点为其Twitter Job提供的作业规范ID(job spec ID),并定义该节点处理请求所需的费用。此外,我们还定义了onlyOwner修饰符,这样只有创建合约的地址才能通过这个合约发推特。


  Tweet函数


  //tweets the supplied string


  function tweet(string memory twt)public onlyOwner{


  Chainlink.Request memory req=buildChainlinkRequest(jobId,address(this),this.fulfill.selector);


  //req.add("endpoint","https://api.twitter.com/1.1/statuses/update.json");


  req.add("status",twt);


  req.add("copyPath","statusCode")


  sendChainlinkRequestTo(oracle,req,fee);


  }


  //callback function


  function fulfill(bytes32 _requestId,uint256 _statusCode)public recordChainlinkFulfillment(_requestId){


  statusCode=_statusCode;


  }


  构建了合约之后,发推特就非常简单了。tweet函数接收要推送的字符串,创建请求结构体,并将其提交给定义的Chainlink节点。请求结构中需要两个字段:status和copyPath。status,即我们希望发布的推文,在Twitter外部适配器中被定义为一个输入,该节点将运行它来完成这项工作。而copyPath则是所有Chainlink节点支持的默认适配器的一部分,它告诉节点如何解析JSON输出。此外,endpoint可以指定为不同的Twitter端点,具有不同的功能,但适配器默即可发布推文状态,因此目前不需要关心这一参数。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70016646/viewspace-2942652/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
专业区块项目开发团队:18028578624微電

注册时间:2022-04-13

  • 博文量
    158
  • 访问量
    95686