Solidity

是否可以將智能合約發送到地址錢包?

  • January 16, 2017

正如這裡所解釋的,智能合約通過交易部署在區塊鏈上,程式碼如下:

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'
  });

每個知道合約地址的人都可以向它發送交易。

引用自:https://ethereum.stackexchange.com/questions/11372