創(chuàng)客互助公排開發(fā)丨創(chuàng)客互助公排系統(tǒng)開發(fā)詳細(xì)技術(shù)丨創(chuàng)客互助公排源碼部署
區(qū)塊頭和區(qū)塊體數(shù)據(jù)也會(huì)被當(dāng)作輸入數(shù)據(jù)做一次Hash運(yùn)算,其運(yùn)算結(jié)果會(huì)被存儲(chǔ)在下一個(gè)區(qū)塊的區(qū)塊頭中,這樣任何區(qū)塊內(nèi)容的修改都會(huì)反映到區(qū)塊的Hash值上,而區(qū)塊的Hash值又是下一個(gè)區(qū)塊的輸入數(shù)據(jù),它又會(huì)被當(dāng)作新區(qū)塊的數(shù)據(jù)參與一次新區(qū)塊的Hash運(yùn)算,隨著時(shí)間的推移和交易量的增加,所有的區(qū)塊會(huì)通過保存前一個(gè)區(qū)塊的Hash運(yùn)算結(jié)果的方式組成一條鏈。
==將交易打包成數(shù)據(jù)塊,再將數(shù)據(jù)塊以Hash值的方式組織成鏈?zhǔn)浇Y(jié)構(gòu),這就是區(qū)塊鏈定義的來源。==由分布在全世界的節(jié)點(diǎn)組成,任何人都可以公開查詢,但又無法任意修改。
合約交互代碼:
//SPDX-License-Identifier:MIT
pragma solidity=0.8.4;
contract Test{
uint256 private value;
function setValue(uint256 _value)public{
value=_value;需求及功能開發(fā)I35設(shè)計(jì)7O98開發(fā)O7I8
}
function getValue()public view returns(uint256){
return value;
}
}
使用web3.js與合約交互
再有就是通過web3.js的庫進(jìn)行交互
var fs=require('fs');
var Web3=require('web3');
const infuraKey=fs.readFileSync("../.infuraKey").toString().trim();
var ethRpcUrl=`https://rinkeby.infura.io/v3/`+infuraKey
var web3=new Web3(ethRpcUrl);
abi=[
{模式開發(fā):MrsFu123
"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();
}