Solidity
是否可以將智能合約發送到地址錢包?
正如這裡所解釋的,智能合約通過交易部署在區塊鏈上,程式碼如下:
var primaryAddress = eth.accounts[0] var abi = [{ constant: false, inputs: { name: 'a', type: 'uint256' } }] var MyContract = eth.contract(abi) var contract = MyContract.new(arg1, arg2, ..., {from: primaryAddress, data: evmByteCodeFromPreviousSection})
但是,如果我知道他的地址錢包,也可以將其發送給某人嗎?因為他將是這個智能合約的主要使用者。
或者智能合約是否應該在開採後將交易及其地址發送給他?
eth.sendTransaction({from:eth.accounts[0],to:eth.accounts[1],value:web3.toWei(1,"ether"),data:web3.toHex(smartcontract.address)})
在這種情況下,使用者是否可以訪問智能合約,因為他不是所有者?
謝謝
沒有發送契約這樣的事情。契約被創建。新合約的地址由合約創建者的地址和 nonce 決定。
但是您可以在創建合約時發送一些參數(例如主要使用者的地址)。這些參數將被傳遞給合約的建構子(參見solidity docs):
pragma solidity ^0.4.0; contract Test { address primaryUser; function Test(address _primaryUser) { primaryUser = _primaryUser; } }
合約創建:
var testContract = web3.eth.contract(abi); var test = testContract.new( _primaryUser, /* constructor argument here */ { from: web3.eth.accounts[0], data: bytecode, gas: '4700000' });
每個知道合約地址的人都可以向它發送交易。