最小的 Dapp?
我與一堆完全不涉及乙太幣或任何類型資金的功能簽訂了契約。基本上,我想要的只是一個帶有允許人們使用這些功能的表單的 html 頁面。
所有交易都將在同一個乙太坊地址完成,僅使用乙太作為氣體。使用者需要一個帳戶以避免任何人耗盡我的所有氣體,我只提供給經過認證的人的帳戶,並且每天或每小時的交易數量有限。
基本上,使用者甚至不必知道他們正在使用區塊鏈。
目前我的合約在乙太坊錢包上執行良好,部署應用程序需要什麼?我發現的教程似乎過於復雜。
從網頁呼叫合約函式的最簡單方法是什麼?
我已經考慮過這種區塊鏈的複雜性和安全性對最終使用者完全隱藏的場景。如果您想將區塊鏈更多地用作不可變數據庫而不是分類帳,則可能會發生這種情況。
我的解決方案包括開發 NodeJS API:
- 獲取 /api/資源
- 發布 /api/資源
- 放置 /api/資源
- 刪除 /api/資源
對於 GET 方法(讀取),它並不是真正需要的,因為您可以直接注入 web3 並將其連接到節點。因此,您將能夠通過您的“恆定”合約功能或“公共”屬性讀取區塊鏈中的數據。
對於 POST/PUT/DELETE(寫入),每個事務都必須簽名。因此,您的前端/客戶端程式碼可以呼叫將使案例如Ethereumjs-tx執行事務的 API(後端) 。這樣,每筆交易都將由 API 擁有的同一地址簽名。
但正如你所說,如果有人重播多次 HTTP 請求,它會耗盡你的帳戶的 gas。所以你的 API 至少應該有以下功能:
- 驗證
- 速率限制
我還沒有實現這個解決方案,這只是我幾週前畫的。所以我可能會錯過一些東西。
如果我理解正確並且您的使用者有自己的地址,那麼您有兩種選擇:
- 讓他們在 chrome 中使用Metamask外掛
- 讓他們使用 Mist 瀏覽器
如果沒有其中之一,您的使用者將無法與智能合約進行互動。
此外,採用Meteor或 Truffle 之類的框架可以幫助您使用 web3.js 庫相當輕鬆地設計簡單的 DApp。
與你的 SC 互動的最簡單方法仍然是使用乙太坊錢包觀看它。為此,您只需要地址和契約的 ABI。您將獲得一個標準化的 GUI 來與任何合約進行互動。