Web3j

多個使用者的相同合約地址是否應該相同?

  • December 21, 2021

好的,我知道這是個愚蠢的問題,但我無法理解智能合約。我正在使用 web3j 製作一個簡單的 android dapp。它應該有添加存款,提取存款並獲得目前存款金額。而且效果很好。使用我從 remix 獲得的硬編碼合約地址。但問題是,當我將 mu dapp 安裝到另一個偏差時,我得到相同的餘額和所有。同樣的事情是使用不同的私鑰和公鑰。我得到相同的餘額和所有。但是當我嘗試像這樣部署契約時:

private String deployContract(Web3j web3j, TransactionManager transactionManager) throws Exception {
   return MyContract.deploy(web3j, transactionManager, ManagedTransaction.GAS_PRICE, Contract.GAS_LIMIT)
           .send()
           .getContractAddress();
}

並使用此程式碼中的契約地址我收到錯誤:

org.web3j.tx.exceptions.ContractCallException: Empty value (0x)

所以我不知道在這裡做什麼?我正在為多邊形使用孟買測試網

Web3j.build(new HttpService("https://speedy-nodes-nyc.moralis.io/xxxxxxxxxxxxxxxx/polygon/mumbai"));

dApp 的所有使用者的合約地址應該相同,但在這個 dApp 中,您應該區分使用者的公鑰。通常使用地圖來執行此操作。

使用來自地址的映射(您可以使用 msg.sender 訪問的使用者的私鑰)來平衡。這樣所有使用者都將擁有不同的餘額,並且沒有人能夠訪問其他人的錢包(除非您另外編碼)

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