3M模式智慧合約dapp系統開發搭建(現成案例原始碼)
ABI物件例項
函式(functions)* type:函式型別。預設為 function ,也可能是 constructor* stateMutability:狀態可變性。* payable* nonpayable* view* pure* inputs,outputs:函式輸入輸出的引數列表* name:函式名稱* 事件(events)* type:event* inputs:輸入物件列表,包括 name , type , indexed* anonymous:是否為匿名的
建立合約
在一個合約中,我們可以編寫的內容:函式,結構體,建構函式,狀態變數,事件,列舉型別等。一個合約想要部署到區塊鏈,需要編譯為位元組碼檔案;一個合約想要被外部的應用程式(如DApp)訪問,則需要編譯為ABI檔案,供應用程式呼叫。
部署合約* 區塊鏈上已經部署了智慧合約,透過程式碼將JS中的合約與鏈上合約進行關聯與互動。* 直接透過JS程式碼在區塊鏈上部署一個新合約。
? 部署新合約
new web3.eth.Contract(abi[, address]) 建立一個合約物件。* [contract].deploy() 部署合約:// 該過程等價於在Remix上部署合約const abi = [ { "inputs": [ { "internalType": "uint256", "name": "_number", "type": "uint256" } ], "name": "setNumber", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getNumber", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }]const contract = new web3.eth.Contract(abi, address)const data = '608060405234801561001057600080fd5b50610150806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80633fb5c1cb1461003b578063f2c9ecd814610057575b600080fd5b6100556004803603810190610050919061009d565b610075565b005b61005f61007f565b60405161006c91906100d9565b60405180910390f35b8060008190555050565b60008054905090565b60008135905061009781610103565b92915050565b6000602082840312156100b3576100b26100fe565b5b60006100c184828501610088565b91505092915050565b6100d3816100f4565b82525050565b60006020820190506100ee60008301846100ca565b92915050565b6000819050919050565b600080fd5b61010c816100f4565b811461011757600080fd5b5056fea26469706673582212206d42283bc640e62ba9095ff6f78d7e4a75272960a2332eff853e9968295e534664736f6c63430008070033' // The data field must be HEX encoded data.contract.deploy({data,}).send({from: '0x539CDB50CC507bF167e205d10Df87cd8c1827Af6',gas: 1000000, // GAS LIMITgasPrice: '120000'}, (err, res) => {console.log('res', err, res) // 返回transaction的hash}) #### ? 與鏈上合約進行關聯與互動
const address = '0x8B48aF1b46eFE178014CdD6c90f3DdfbDABC6d67' // 合約部署地址
const myContract = new web3.eth.Contract(abi, address)
console.log(myContract)
1
2
3
呼叫合約函式
[contract].methods.[myMethod([params...])].call(options[, defaultBlock, callback]) 呼叫智慧合約讀(pure/view)函式。* params:函式的引數* options-Object(可選):* from-String(可選):呼叫交易的地址。* gasPrice(可選):交易的每個gas的價格。* gas(可選):交易的gas限制。
[contract].methods.[myMethod([params...])].send(options[, defaultBlock, callback]) 呼叫寫函式,相當於傳送了交易。* send方法的options-Object:* from-String:傳送人地址* 返回結果觸發事件:* transactionHash-String:傳送交易且得到交易雜湊值後立即觸發。* receipt-Object:當收到交易收據時觸發。合約收據帶有的不是 logs ,而是以事件名為鍵,以事件本身為屬性值的 events 。* confirmation-Number/Object:從區塊被挖到的第一個區塊確認開始,每次確認都會觸發,直到第24次確認。觸發時第一個引數為收到的確認數,第二個引數為收到的交易收據。* error:交易傳送過程中出錯時觸發。如果交易被網路拒接且帶有交易收據,第二個引數就是該交易收據。
const Web3 = require('web3')
let web3;
if (typeof web3 !== 'undefined') {web3 = new Web3(web3.currentProvider);
} else {// set the provider you want from Web3.providersweb3 = new Web3(new Web3.providers.HttpProvider("<));
}
const abi = [
{
"inputs": [
{
"internalType": "uint256",
"name": "_number",
"type": "uint256"
}
],
"name": "setNumber",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getNumber",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
]
const address = '0xf935e846633aF4b9079c8a63d4d3D5203d437ae1' // 合約部署地址
const myContract = new web3.eth.Contract(abi, address)
myContract.methods.setNumber(123).send({
from: '0x73538146481643a4bAE6D5A97a407018c14E20C5'
}).on('receipt', (data) => {
console.log(data)
})
myContract.methods.getNumber().call((err, res) => {
console.log(res)
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
呼叫合約事件
事件:將輸入引數記錄到日誌資訊中
區塊鏈是一個由區塊組成的列表,這些塊的內容基本上時交易記錄。每個交易都有一個附加的交易日誌,事件結果存放在交易日誌裡。合約發出的事件,可以使用合約地址訪問。
[myContract].getPastEvents(filter, config[, callback]) 執行事件查詢。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70010128/viewspace-2949117/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 3M模式智慧合約系統開發搭建(現成案例原始碼)模式原始碼
- BSC鏈智慧合約dapp系統定製開發(現成原始碼搭建)APP原始碼
- 普及一下:3M互助合約丨MMM互助智慧合約模式系統開發原始碼搭建模式原始碼
- MMM(3M)互助合約系統開發原始碼搭建原始碼
- 秒合約系統開發搭建原始碼|秒合約案例原始碼
- 佛薩奇Metaforce智慧合約系統開發(現成系統原始碼搭建)原始碼
- 現貨合約秒合約跟單系統開發(原始碼案例)搭建原始碼
- 什麼是智慧合約?智慧合約dapp系統借貸理財系統開發案例(原始碼)APP原始碼
- 3M互助模式系統開發|3M現成案例模式
- DAPP智慧合約/系統開發/智慧合約原始碼/DAPP/Defi/NFT/IDOAPP原始碼
- 合約跟單系統開發(原始碼搭建方案)_現成原始碼
- 3M互助公排Dapp系統開發智慧合約編寫詳情(原始碼)APP原始碼
- 合約量化跟單系統開發搭建丨現成原始碼搭建原始碼
- LP池智慧合約系統開發原始碼案例原始碼
- 佛薩奇(Forsage)矩陣智慧合約系統開發(現成原始碼搭建)矩陣原始碼
- DAPP智慧合約LP質押挖礦系統開發案例搭建APP
- DAPP馬蹄鏈智慧合約系統開發(案例)丨DAPP馬蹄鏈開發原始碼APP原始碼
- 鏈上DAPP系統開發|智慧合約DAPP開發搭建APP
- 量化合約系統開發(方案模式)|合約量化系統開發(原始碼搭建)模式原始碼
- 智慧合約眾籌迴圈互助遊戲系統開發(DAPP開發)丨案例原始碼遊戲APP原始碼
- 合約交易系統開發|智慧合約交易平臺原始碼搭建原始碼
- ARB鏈智慧合約系統開發|APP搭建|案例詳細|原始碼出售APP原始碼
- DAPP/defi智慧合約交易系統開發詳情/NFT智慧合約盲盒模式方案.搭建APP模式
- 秒合約開發系統專案案例|秒合約現成案例
- 互助搶單dapp模式系統技術開發(現成原始碼搭建)APP模式原始碼
- MMM/3M互助智慧合約開發穩定版,MMM/3M互助智慧合約系統開發成熟及技術(原始碼功能)原始碼
- 質押挖礦dapp系統開發詳情(原始碼搭建)現成案例APP原始碼
- DAPP智慧合約鏈上質押挖礦模式系統開發丨公鏈挖礦系統開發原始碼搭建APP模式原始碼
- 馬蹄鏈智慧合約dapp系統開發搭建APP
- DApp智慧合約系統開發APP
- 3M互助公排智慧合約系統開發(詳細及規則)丨3M互助公排智慧合約系統開發(原始碼邏輯)原始碼
- 合約跟單系統開發(原始碼案例)丨合約跟單開發原始碼案例部署原始碼
- DAPP合約代幣分紅模式系統開發案例APP模式
- 合約量化系統開發(原始碼搭建)原始碼
- DAPP馬蹄鏈polygon智慧合約系統開發(詳細及案例)原始碼部署APPGo原始碼
- DAPP合約LP質押挖礦原始碼搭建系統開發APP原始碼
- Dapp 合約代幣系統開發智慧合約APP
- Dapp智慧合約遊戲鏈遊開發丨智慧合約遊戲鏈遊系統開發案例版APP遊戲