NFT數字藏品開發需求丨NFT數字藏品系統開發(開發原理)丨NFT數字藏品原始碼功能

xiaofufu發表於2023-02-27

  區塊頭和區塊體資料也會被當作輸入資料做一次Hash運算,其運算結果會被儲存在下一個區塊的區塊頭中,這樣任何區塊內容的修改都會反映到區塊的Hash值上,而區塊的Hash值又是下一個區塊的輸入資料,它又會被當作新區塊的資料參與一次新區塊的Hash運算,隨著時間的推移和交易量的增加,所有的區塊會透過儲存前一個區塊的Hash運算結果的方式組成一條鏈。


  ==將交易打包成資料塊,再將資料塊以Hash值的方式組織成鏈式結構,這就是區塊鏈定義的來源。==由分佈在全世界的節點組成,任何人都可以公開查詢,但又無法任意修改。


  合約互動程式碼:


  //SPDX-License-Identifier:MIT


  pragma solidity=0.8.4;


  contract Test{


  uint256 private value;


  function setValue(uint256 _value)public{


  value=_value;


  }


  function getValue()public view returns(uint256){


  return value;


  }


  }


  使用web3.js與合約互動


  再有就是透過web3.js的庫進行互動


  var fs=require('fs');


  var Web3=require('web3');


  const infuraKey=fs.readFileSync("../.infuraKey").toString().trim();


  var ethRpcUrl=``+infuraKey


  var web3=new Web3(ethRpcUrl);


  abi=[


  {

  "inputs":[],


  "name":"getValue",


  "outputs":[


  {


  "internalType":"uint256",


  "name":"",


  "type":"uint256"


  }


  ],


  "stateMutability":"view",


  "type":"function"


  },


  {


  "inputs":[


  {


  "internalType":"uint256",


  "name":"_value",


  "type":"uint256"


  }


  ],


  "name":"setValue",


  "outputs":[],


  "stateMutability":"nonpayable",


  "type":"function"


  }


  ]


  address="合約地址"


  pk="錢包私鑰"


  main()


  .then(()=>process.exit(0))


  .catch(error=>{


  console.error(error);


  process.exit(1);


  });


  async function getValue(){


  var contract=new web3.eth.Contract(abi,address);


  var value=await contract.methods.getValue().call();


  console.log(value);


  }


  async function setValue(){


  value=123


  var contract=new web3.eth.Contract(abi,address);


  var encodeABI=await contract.methods.setValue(value).encodeABI();


  var signResult=await web3.eth.accounts.signTransaction({


  gas:3000000,


  to:address,


  data:encodeABI


  },pk);


  console.log(signResult);


  var result=await web3.eth.sendSignedTransaction(signResult.rawTransaction);


  console.log(result);


  }


  async function main(){


  await setValue();


  await getValue();


  }


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69956839/viewspace-2937098/,如需轉載,請註明出處,否則將追究法律責任。

相關文章