Pulogalamu ya ProHoster > Blog > Ulamuliro > Chitani zochitika zapagulu komanso zachinsinsi pa blockchain ya JPMorgan Quorum pogwiritsa ntchito Web3
Chitani zochitika zapagulu komanso zachinsinsi pa blockchain ya JPMorgan Quorum pogwiritsa ntchito Web3
Chiwerengero ndi blockchain yochokera ku Ethereum yopangidwa ndi JPMorgan ndipo posachedwa idakhala nsanja yoyamba yogawidwa yoperekedwa ndi Microsoft Azure.
Quorum imathandizira zochitika zachinsinsi komanso zapagulu ndipo ili ndi zochitika zambiri zogwiritsira ntchito malonda.
M'nkhaniyi, tiwona chimodzi mwazinthu zotere - kutumizidwa kwa netiweki yogawa pakati pa sitolo yayikulu ndi mwini nyumba yosungiramo katundu kuti apereke zambiri zaposachedwa za kutentha kwa nyumba yosungiramo katundu.
Khodi yogwiritsidwa ntchito mu phunziroli ili mkati nkhokwe pa GitHub.
Nkhaniyi ikuti:
kupanga mgwirizano wanzeru;
kutumizidwa kwa Quorum network pogwiritsa ntchito Chainstack;
Chiwerengero cha anthu onse;
Zochita zachinsinsi za quorum.
Mwachitsanzo, timagwiritsa ntchito zochitika zowunikira kutentha m'malo osungiramo zinthu za mamembala a Quorum network mkati mwa intaneti ya Zinthu (IoT).
Zochita zimapangidwa ndi otenga nawo mbali osiyanasiyana kuti azilumikizana ndi ma consortium omwe amakhala. Ntchito iliyonse imatumiza mgwirizano kapena kuyitana ntchito mu mgwirizano kuti itumize deta pa intaneti. Zochita izi zimatsatiridwa ndi ma node onse pa intaneti.
Zochita zapagulu zilipo kuti onse omwe atenga nawo mbali a consortium awonedwe. Zochita zachinsinsi zimawonjezera chinsinsi ndipo zimapezeka kwa omwe ali ndi ufulu wochita izi.
Pansipa pali mgwirizano wosavuta wanzeru womwe wapangidwira zochitika zathu. Ili ndi kusintha kwapagulu temperature, zomwe zingasinthidwe pogwiritsa ntchito set ndi kulandira mwa njira get.
pragma solidity ^0.4.25;
contract TemperatureMonitor {
int8 public temperature;
function set(int8 temp) public {
temperature = temp;
}
function get() view public returns (int8) {
return temperature;
}
}
Kuti contract igwire ntchito web3.js, iyenera kumasuliridwa mu mtundu wa ABI ndi bytecode. Kugwiritsa ntchito formatContractapa akulemba mgwirizano ntchito solc-js.
Kutentha kwa nyumba yosungiramo katundu ndikofunikira kwambiri pakuchepetsa mtengo, makamaka kwa zinthu zomwe ziyenera kusungidwa pa kutentha kwa sub-zero.
Polola makampani kugawana kutentha kwakunja kwa malo awo munthawi yeniyeni ndikulemba m'mabuku osasinthika, omwe akuchita nawo ma network amachepetsa ndalama ndi nthawi.
Tichita ntchito zitatu, zomwe zikuwonetsedwa mu chithunzichi:
Titumiza contract kudzera Mfundo 1:
const contractAddress = await deployContract(raft1Node);
console.log(`Contract address after deployment: ${contractAddress}`);
Khazikitsani kutentha kudzera Mfundo 2 pa 3 digiri:
const status = await setTemperature(raft2Node, contractAddress, 3);
console.log(`Transaction status: ${status}`);
Mfundo 3 adzalandira zambiri kuchokera ku smart contract. Mgwirizanowu udzabwezera mtengo wa madigiri 3:
// Attempts to set Contract temperature to 10, this will not mutate contract's temperature
await setTemperature(
raft3Node,
contractAddress,
process.env.PK1,
10,
);
// This returns null
const temp = await getTemperature(raft3Node, contractAddress);
console.log(`[Node3] temp retrieved after updating contract from external nodes: ${temp}`);
Kutentha munkhaniyi kuyenera kubweza mtengo wa 12 kuchokera ku mgwirizano wanzeru. Chonde dziwani kuti Wogulitsa apa ali ndi mwayi wopeza mgwirizano wanzeru.
// Updated Contract temperature to 12 degrees
await setTemperature(
raft2Node,
contractAddress,
process.env.PK1,
12,
);
// This returns 12
const temp2 = await getTemperature(raft2Node, contractAddress);
console.log(`[Node2] temp retrieved after updating contract from internal nodes: ${temp2}`);
Mu gawo 3 kutentha kunakhazikitsidwa ku 12, koma Mbali yachitatu alibe mwayi wopeza mgwirizano wanzeru. Chifukwa chake mtengo wobwerera uyenera kukhala wopanda pake.
// This returns null
const temp3 = await getTemperature(raft3Node, contractAddress);
console.log(`[Node3] temp retrieved from external nodes after update ${temp}`);
Kenako, tiyang'ana mwatsatanetsatane momwe mungapangire zochitika zapadera pa netiweki ya Quorum ndi web3.js. Popeza ma code ambiri ndi ofanana ndi zochitika zapagulu, tidzangowonetsa magawo omwe ali osiyana ndi zochitika zapadera.
Dziwani kuti mgwirizano womwe udakwezedwa pa netiweki ndi wosasinthika, chifukwa chake mwayi wololedwa uyenera kuperekedwa kumalo oyenerera ndikupangitsa mgwirizano wapagulu panthawi yomwe mgwirizanowo udatumizidwa, osati pambuyo pake.
async function deployContract(web3, publicKey) {
const address = await getAddress(web3);
const contract = new web3.eth.Contract(
temperatureMonitor.interface,
);
return contract.deploy({
data: temperatureMonitor.bytecode,
})
.send({
from: address,
gas: ‘0x2CD29C0’,
// Grant Permission to Contract by including nodes public keys
privateFor: [publicKey],
})
.then((contract) => {
return contract.options.address;
});
}
Zochita zachinsinsi zimachitikanso chimodzimodzi - pophatikiza makiyi a anthu omwe akutenga nawo mbali pa nthawi yophedwa.
async function setTemperature(web3, contractAddress, publicKey, temp) {
const address = await getAddress(web3);
const myContract = await getContract(web3, contractAddress);
return myContract.methods.set(temp).send({
from: address,
// Grant Permission by including nodes public keys
privateFor: [publicKey],
}).then((receipt) => {
return receipt.status;
});
}
Tsopano tikhoza kuthamanga payekha.js ndi zotsatira zotsatirazi:
node private.js
Contract address after deployment: 0x85dBF88B4dfa47e73608b33454E4e3BA2812B21D
[Node3] temp retrieved after updating contract from external nodes: null
[Node2] temp retrieved after updating contract from internal nodes: 12
[Node3] temp retrieved from external nodes after update null
Wofufuza wa Quorum mu Chainstack awonetsa izi:
kutumizidwa kwa mgwirizano kuchokera kwa otenga nawo mbali Supamaketi;
Kuphedwa SetTemperature от Gulu lina;
Kuphedwa SetTemperature kuchokera kwa wophunzira Wogulitsa.
Monga mukuwonera, zochitika zonse ziwirizi zatha, koma kungochita kuchokera kwa omwe akutenga nawo mbali Wogulitsa zasintha kutentha mu mgwirizano. Choncho, zochitika zapadera zimapereka kusasinthika, koma nthawi yomweyo siziwulula deta kwa munthu wina.
Pomaliza
Tidayang'ana nkhani yogwiritsira ntchito malonda kuti Quorum ipereke chidziwitso cha kutentha kwanthawi yayitali m'nyumba yosungiramo katundu potumiza maukonde pakati pamagulu awiri - sitolo yayikulu ndi mwini nyumba yosungiramo zinthu.
Tidawonetsa momwe chidziwitso cha kutentha kwanthawi yayitali chingasungidwire kudzera muzochita zagulu ndi zachinsinsi.