Solidity
一種繞過受限吸氣劑的方法
考慮一個 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 程序,這將允許人們有效地繞過私鑰所有權要求。
恕我直言,限制對吸氣劑的訪問是一種毫無意義的契約設計。
總是可以訪問每個值。事實上,每個完整節點都必須擁有完全訪問權限,因為它們需要它來處理合約功能。
如果契約沒有“允許”訪問,那實際上只會給堅定的對手帶來不便。
這是一種規避契約規則的方法。如何從合約中讀取私有變數?
希望能幫助到你