有沒有辦法動態創建指向先前契約的契約?
我想實現一個跟踪系統..我跟踪在他們之間傳遞物品的兩方之間的事件..然後接收者將其傳遞給另一個人等等……
我想同時為每筆交易(每兩次交易之間)創建一個合約,我希望仍然能夠跟踪所有鏈..發起人和之前的合約…
有沒有辦法做到這一點?
前言:如果你想使用 web3 來創建互動,以下應該可以工作:
如果您
.deploy()
在通過 web3 構造的合約上使用該方法,它應該返回地址 onreceipt
和實例本身 onconfirmation
。myContract.deploy({ data: '0x12345...', arguments: [123, 'My String'] }) .send({ from: '0x1234567890123456789012345678901234567891', // owner address gas: 1500000, gasPrice: '30000000000000' }, function(error, transactionHash){ ... }) .on('error', function(error){ ... }) .on('transactionHash', function(transactionHash){ ... }) .on('receipt', function(receipt){ console.log(receipt.contractAddress) // contains the new contract address }) .on('confirmation', function(confirmationNumber, receipt){ ... }) .then(function(newContractInstance){ console.log(newContractInstance.options.address) // instance with the new contract address })
來源:https ://web3js.readthedocs.io/en/1.0/web3-eth-contract.html#deploy
讓我們澄清一些概念性的事情。
我想為每筆交易創建一份契約
不太可能。交易不是契約。一些交易部署合約,因為這是它們的目的,而其他交易與合約互動。我能想到的最接近的關聯可能是記錄某種類型的交易文件的契約。這可能是一個處理類的所有實例的契約。
跟踪在他們之間傳遞物品的兩方之間的事件
在這裡,該語言的解包有點挑戰性,因為“事件”在乙太坊中具有非常特定的含義,“交易”和“合約”也是如此。我將這樣解釋它以減少混淆:
“跟踪參與產品傳遞的兩方之間的互動。”
讓我們打開包裝。
**產品:**某種在契約中有代表的物理對象。這可能最好保存在儲存產品資訊和可能其他資訊的單個契約中。在您喜歡的情況下,這可能最好被視為(邏輯)表中的行或類的實例。從這裡開始:https ://medium.com/robhitchens/solidity-crud-part-1-824ffa69509a或這裡:Solidity 是否有解決良好且簡單的儲存模式?
**參與傳遞的各方:**這意味著有一個業務流程,其步驟以某種方式流動。如果沒有更好的案例描述,假設雙方必須簽字,然後所有權轉移,也就是傳遞。
這個過程(無論它是什麼)正是契約的目的。契約可以保存產品資訊,包括所有權,並執行嚴格限制所有權轉移方式的流程。
合約可以與其他合約對話。因此,產品契約強制執行的轉移過程可能會受到傳遞服務等簽字的約束。考慮兩個開始行動的“批准人”,一些託管數據以指示對下一步具有權威性的傳遞公司,以及結束所有權轉讓的傳遞確認。
在這種情況下,有一個單一的產品契約,人們可以查閱它來發現任何產品實例的狀態/所有權以及發生在它身上的事情的歷史。
希望能幫助到你。