Etherscan“寫契約”選項卡 - 它有什麼用?
Write Contract
Etherscan中選項卡的用途是什麼?例如,如果您
QTUM
在 Etherscan ( https://bit.ly/2IsddkT ) 上查找代幣合約,然後點擊Write Contract
TAB,您將擁有該合約的所有功能:-
approve
-
transferFrom()
-
transfer
等等
我的意思是它們不僅僅是簡單地列在那裡,您實際上可以與它們互動,向它們輸入值等等。
為什麼?
你真的能夠執行所有這些功能嗎?意思是,例如將代幣從某人的賬戶轉移到您的賬戶?
我假設 - 並希望 - 答案是“不”,但我對此是對還是錯?
因為它似乎肯定會讓你這樣做:
-它允許你通過 將你的帳戶連接到該合約
MetaMask
,-然後它允許你設置值——比如你想將多少代幣轉移到你自己的帳戶等。
我的意思是我實際上並沒有在執行任何可用功能時扣動扳機(我不想冒險扔掉
ETHER
或“實驗”) - 但它看起來肯定不會阻止我這樣做。那麼,這裡發生了什麼?擁有這個選項卡以及這種“寫入”契約的能力有什麼意義?
你是對的,但還有更多。
這些是智能合約中的可寫函式。這是“錢包”與之通信的介面。
如果您不是開發人員,那麼這可能看起來有點抽象。智能合約公開了接受輸入並返回結果的函式。在這兩者之間,他們可以操縱合約的內部儲存,稱為“狀態”,計算事物、檢查事物或呼叫其他合約中的函式。它是一種通用語言。
通常,這些功能由使用者界面 (UI) 或讀取/寫入合約的伺服器使用。換句話說,它更像是開發人員的界面,而不是使用者界面。然而,合約安全設計總是假設使用者(或攻擊者)可以與原始介面進行通信。一種方法是您發現的方法。
你真的能夠執行所有這些功能嗎?
你可以試試。
成功與否取決於契約是如何寫的。您將必須簽署交易,並且契約將知道誰簽署了(
msg.sender
在程式碼中呼叫)。它不應該讓你transfer
或approve
你沒有的資金。強調一下,安全性以及什麼或不允許什麼始終是契約級別的問題,因為如果 UI 是阻止不良行為的唯一方法,那麼惡意使用者將根本不會使用給定的 UI。
按照常識和對代幣應該做什麼的共同理解,檢查發件人的餘額可能是此類合約的第一步。
合約第 66 行:https ://etherscan.io/address/0x9a642d6b3368ddc662CA244bAdf32cDA716005BC#code
if (balances[msg.sender] >= _value && _value > 0) {
要進行轉賬,發送方的餘額必須至少與轉賬金額一樣多,並且轉賬金額必須大於零。因此,如果您有足夠的令牌,它將起作用。
希望能幫助到你。