Solidity

一種繞過受限吸氣劑的方法

  • December 4, 2019

考慮一個 getter 函式,它限制誰可以讀取它,比如

function getData()
   public
   view
   returns (uint x)
{
   require(msg.sender = '0x123..123');
   x = data;
}

這可以防止人們通過 Remix 或其他合約獲取此數據,除非其地址為 0x123..123;請求者不僅要知道地址,還要擁有它的私鑰。

然而通過 web3.js,我可以使用

EthContract.methods.getData.cacheCall({ 'from': '0x123..123' })

這裡我不需要私鑰。

我想知道是否有一種方法可以在區塊鏈中呼叫 web3.js 程序,這將允許人們有效地繞過私鑰所有權要求。

恕我直言,限制對吸氣劑的訪問是一種毫無意義的契約設計。

總是可以訪問每個值。事實上,每個完整節點都必須擁有完全訪問權限,因為它們需要它來處理合約功能。

如果契約沒有“允許”訪問,那實際上只會給堅定的對手帶來不便。

這是一種規避契約規則的方法。如何從合約中讀取私有變數?

希望能幫助到你

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