Solidity 这两个值之间的差异?

Solidity 这两个值之间的差异?,solidity,web3js,Solidity,Web3js,在我的js文件中,我调用一个发送事务到智能合约,那么值之间的区别是什么: instance.multiply.sendTransaction(val,{from:accounts[0],gas:300000}和instance.multiply.sendTransaction({from:accounts[0],gas:30000,value:val} 我将第一个参数作为参数传递给函数,第二个参数在函数中可以通过msg.value访问 web3.eth.sendTransaction的正确语法

在我的js文件中,我调用一个发送事务到智能合约,那么值之间的区别是什么:

instance.multiply.sendTransaction(val,{from:accounts[0],gas:300000}
instance.multiply.sendTransaction({from:accounts[0],gas:30000,value:val}

我将第一个参数作为参数传递给函数,第二个参数在函数中可以通过
msg.value
访问

web3.eth.sendTransaction的正确语法

第二个可以正常工作
instance.multiply.sendTransaction({from:accounts[0],gas:30000,value:val},
并且应该

sendTransaction的格式是
sendTransaction({from:eth.accounts[0],data:code,gas:100000})

  • from:
    String-发送帐户的地址。使用 web3.eth.defaultAccount属性(如果未指定)
  • 收件人:
    字符串-(可选)邮件的目标地址, 对于合同创建事务,未定义
  • 值:
    Number | String | BigNumber-(可选))传输的值 对于在魏的交易,如果它是一个 合同创建事务

  • gas:
    Number | String | BigNumber-(可选),默认值: 待确定)交易使用的气体量 (未使用的汽油将被退还)

  • 数据
    :字符串-(可选)包含 消息的关联数据,或在 合同创建事务,初始化代码

  • 有关详细信息,请参见:

    在第一个代码片段中,您将
    val
    作为参数传递给函数

    在第二个代码段中,您没有传递任何参数,但在事务中发送了
    val
    wei。是的,合同可以通过查看
    msg.value
    来查看发送了多少wei,但重要的是还有以太的传输。(10**18 wei==1以太。)

    因此,两者之间的关键区别在于:

  • 一个传递值作为参数,另一个不传递
  • 一个在事务中发送一些以太,另一个不发送
  •  web3.eth.sendTransaction(transactionObject [, callback])