Solidity

如何在 Solidity 中的賬戶之間轉移乙太幣?

  • February 3, 2022

我想獲得穩固的乙太賬戶餘額。我嘗試了以下方法,但沒有奏效。你能告訴我怎麼做嗎?

contract MultiplyContract{
   address public buyer;
   address public seller;
   uint public price;
   function MultiplyContract(
     address _buyer,
     address _seller,
     uint _price,
     ){
     buyer = _buyer;
     seller = _seller;
     price = _price;
   }
   function Execution (address _buyer, address _seller) {
   eth.getBalance(_buyer) -=  price; 
   eth.getBalance(_seller) += price;
 }
}

合約可以使用 address.balance 讀取任何餘額,例如:_buyer.balance

合約可以使用 address.send 以 wei 為單位發送其乙太幣,例如:seller.send(price)

合約不能從任意地址中減去。

使用send合約餘額的減法,所以如果合約有餘額,它可以這樣做:

function Execution (address _seller) {
   seller.send(price);
}

address.transfer()

  • 失敗
  • 轉發2,300gas津貼,防止重入
  • 應該在大多數情況下使用,因為這是發送乙太幣的最安全方式

address.send()

  • false失敗返回
  • 轉發2,300gas津貼,防止重入
  • 當您想處理契約中的失敗時,應該在極少數情況下使用

address.call.value().gas()()

  • false失敗返回
  • 轉發所有可用的gas,允許指定轉發多少gas
  • 當您需要控制發送乙太幣時轉發多少氣體或呼叫另一個合約的函式時應該使用

更多細節在這裡https://ethereum.stackexchange.com/a/38642/18932

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