在 ethereum web3 合约上传输 api,如何无法在主网上更改 "from" 参数?

transfer api on ethereum web3 contract, How it is not possible changing "from" parameter on main net?

我是 Dapp 的新手。并研究如何制作 dapp。 我发现了一些这样的代码。在钱包之间转移代币

Token.transfer(accounts[1], 10, {from:accounts[2]}).then(function(result){
      console.log(result)
    })

这会将 10 个代币从账户[2]发送到账户[1]

我了解这是开发模式,它可以处理所有帐户。

但是,我不知道如何在生产中不可能? 我找不到任何关于这个的东西..

任何用户都可以调用此 api 从地址更改吗? 如果不是,那怎么不是?

我认为应该有一些防止代码用户无法更改值。

测试RPC网络,所有账号均可解锁。 所有解锁的账户都可以在没有签名交易的情况下处理。

你可以unlock/lock使用命令

web3.personal.unlockAccount(address);
web3.personal.lockAccount(address);

如果您锁定账户,您将无法在没有签署交易的情况下直接使用'transfer'功能。

参考:

  • 所有账户在eth主网默认锁定

对于 erc20 代币的转账目的,有 2 种方法,TransferTransferFrom

如果您使用转账方式,您必须使用 FromAccount 私钥签署交易。

如果您使用 TransferFrom,您必须在之前的交易中将 FromAccount 的 Allowance 设置为 ToAccount(由 FromAccount 私钥签名)。即使在开发网络中,如果没有使用 FromAccount 私钥签名的交易,您也无法从 FromAccount 转移令牌。