0xDonate — An Ethereum donation service for streamers

給實況主的區塊鏈斗內服務

Alvin Hou
Taipei Ethereum Meetup
5 min readSep 22, 2018

--

透過 Ethereum Smart Contract,讓觀眾可以一鍵斗內給實況主,並讓斗內訊息在實況中即時推播出來的小服務

前言

現在的實況主大多是透過PayPal、歐付寶等第三方支付來接受觀眾斗內。但如果實況主不想被抽手續費,或想讓觀眾直接斗內加密貨幣給他呢?直接留下錢包地址是一個方法,但誰斗了多少很難即時查看也缺乏跟觀眾的互動。

因為最近剛好有點閒時間,所以就寫了個網站,透過智能合約讓實況主也能跟斗內的觀眾們互動。

實況Demo,斗內訊息顯示於畫面上方

How it works

網站的架構相當簡單,只要有一個錢包地址就可以開始使用了。實況主輸入錢包地址就產生對應的3個連結

1. Donate Page

就如同傳統的第三方支付,實況主將斗內連結放在個人的介紹頁面中,觀眾直接透過那個連結捐款。填完想說的話和金額,按下按鈕使用 Metamask 送出交易就完成了。

以Twitch為範例

2. Notification Page

這個頁面會監聽合約上的event,當有人斗內時就會跳出斗內訊息、斗內人名稱和金額。實況主只須於OBS Browser source把這個連結設定好即可。

3. History Page

誰是最大乾爹? link

不免俗的每個實況主都有他的Top donation list,這個頁面會把鏈上的斗內紀錄抓下來彙整成一個排行榜,讓實況主輕鬆看出誰是最大乾爹/乾媽,乾爹媽們也不用擔心自己的心意不會被看到,都已經寫在鏈上了。

Features

0 fee, 0 setup, only a 0x address required

  • 0 fee

對比現在第三方支付,本服務不抽手續費。以歐付寶為例,如果有人信用卡斗內十元,就有高達五元會被抽走。而0xDonate只需送出交易的人負擔交易本身gas費用,實況主可以獲得全額捐款。

  • 0 setup

不需要註冊,不需要綁定任何API Key。不論是Twitch、Youtube Gaming 或是其他平台都能夠使用。

  • 0x address

有一個錢包地址就可以開始使用了!

The Contract

其實合約本身也蠻簡單的(?),目前是部屬在Ropsten Testnet上。

donate 負責將ETH轉到實況主的地址,並觸發NewDonation ,讓斗內資訊可以在實況中顯示出來。而為了省gas,合約並沒有將斗內訊息的內容寫到鏈上。

getDonation 查看鏈上的紀錄,以用來產生斗內紀錄排行榜。

一些開發上的雜談

在半年前於Reddit上看到類似的服務 NanoTwit.ch,就有想說來玩玩看一個ETH版本的。最早的prototype是之前寫的 SimpleEth,一個一鍵打交易的jQuery插件。雖然拖了很久我猜市面上已經有類似的服務了,不過秉持著『頂著幹,做中學』的精神,還是把這個專案寫完了。

都2018年了寫網頁怎麼能不用框架呢?

平常寫前端沒什麼在用框架,這次嘗試看看用快過氣的React 把半成品 ETH-Stream-Donations 包得更現代化些。過程中要特別感謝 @wingemerald 提供技術上的支援。但不得不說React跟一些雜七雜八的dependency真是肥大,有時候webpack跑一跑小筆電的風扇就轉起來了。

開發上有遇到一些小阻礙,一個是web3的,為了要支援火狐所以就換了版本。另一個是新版本web3為了要監聽合約的Event必須要使用 Websocket Provider,就改成使用infura的ws節點。

其他都還算順利,畢竟合約部屬好前端包一包就差不多完工了,資料都在鏈上不用處理後台也是挺方便的。

結語

很多人說區塊鏈是不是過譽了,但我相信Ethereum健康的開發者社群,總是會有些新的點子生出一些有趣的DApp或應用出來。

雖然是個寫好玩的 side project,但歡迎不論是有在實況或是有興趣的朋友都去玩玩看,在測試鏈上人人都可以當乾爹乾媽!

網址: 0xdonate.io

--

--