Solidity

Etherscan“寫契約”選項卡 - 它有什麼用?

  • February 3, 2021

Write ContractEtherscan中選項卡的用途是什麼?

例如,如果您QTUM在 Etherscan ( https://bit.ly/2IsddkT ) 上查找代幣合約,然後點擊Write ContractTAB,您將擁有該合約的所有功能:

-approve

-transferFrom()

-transfer

等等

我的意思是它們不僅僅是簡單地列在那裡,您實際上可以與它們互動,向它們輸入值等等。

為什麼?

你真的能夠執行所有這些功能嗎?意思是,例如將代幣從某人的賬戶轉移到您的賬戶?

我假設 - 並希望 - 答案是“不”,但我對此是對還是錯?

因為它似乎肯定會讓你這樣做:

-它允許你通過 將你的帳戶連接到該合約MetaMask

-然後它允許你設置值——比如你想將多少代幣轉移到你自己的帳戶等。

我的意思是我實際上並沒有在執行任何可用功能時扣動扳機(我不想冒險扔掉ETHER或“實驗”) - 但它看起來肯定不會阻止我這樣做。

那麼,這裡發生了什麼?擁有這個選項卡以及這種“寫入”契約的能力有什麼意義?

你是對的,但還有更多。

這些是智能合約中的可寫函式。這是“錢包”與之通信的介面。

如果您不是開發人員,那麼這可能看起來有點抽象。智能合約公開了接受輸入並返回結果的函式。在這兩者之間,他們可以操縱合約的內部儲存,稱為“狀態”,計算事物、檢查事物或呼叫其他合約中的函式。它是一種通用語言。

通常,這些功能由使用者界面 (UI) 或讀取/寫入合約的伺服器使用。換句話說,它更像是開發人員的界面,而不是使用者界面。然而,合約安全設計總是假設使用者(或攻擊者)可以與原始介面進行通信。一種方法是您發現的方法。

你真的能夠執行所有這些功能嗎?

你可以試試。

成功與否取決於契約是如何寫的。您將必須簽署交易,並且契約將知道誰簽署了(msg.sender在程式碼中呼叫)。它不應該讓你transferapprove你沒有的資金。

強調一下,安全性以及什麼或不允許什麼始終是契約級別的問題,因為如果 UI 是阻止不良行為的唯一方法,那麼惡意使用者將根本不會使用給定的 UI。

按照常識和對代幣應該做什麼的共同理解,檢查發件人的餘額可能是此類合約的第一步。

合約第 66 行:https ://etherscan.io/address/0x9a642d6b3368ddc662CA244bAdf32cDA716005BC#code

if (balances[msg.sender] >= _value && _value > 0) {

要進行轉賬,發送方的餘額必須至少與轉賬金額一樣多,並且轉賬金額必須大於零。因此,如果您有足夠的令牌,它將起作用。

希望能幫助到你。

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