Ethtoken合約
『壹』 公鏈代幣有合約地址嗎
有的。
合約地址指的是合約類賬戶中所包含的地址,具體是指用戶在某個支持智能合約的區塊公鏈上創建了合約類的賬戶,這一類型的賬戶是由合約地址和儲蓄代碼共同構成的。此外,在支持智能合約的區塊公鏈上還可以創造一種外部賬戶,外部賬戶是公鑰和私鑰構成。
1、代幣合約就是一個映射著賬戶地址以及余額的智能合約,賬戶的余額是由合約的創建者定義的,在代幣合約中賬戶余額可以用來表示物理對象,或者其他貨幣的價值,也可以表示持有者的名望,而每個智能合約都有其對應的一串亂碼,這就是合約地址。
2、一個幣的合約地址可以用來查看該代幣的余額等具體信息,還可以查看詳細的合約內容。本質上來說,一個代幣合約就是一個包含了一個對賬戶地址及其餘額的映射的智能合約。賬戶余額表示一種由合約創建者定義的值:一個代幣合約也許使用余額來表示物理對象,或是表示另一種貨幣價值,還可以表示持有人的名望。余額的單位通常被稱為token。
3、當token從一個賬戶被轉移到另一個賬戶的時候,代幣合約更新兩個賬戶的余額。如果該token合約允許的話,改變token總體數量有兩種方案。token的總數可以通過鑄造新token來增加。舉個例子,鑄造出想要的token到具體的合約地址 。銷毀token的另一種方式是將token發送到一個未創建私鑰的地址,通常來說就是0地址。這會使得這些token不可用,在這方面,它與銷毀token有同樣的效果,但並沒有減少token的總數。簡單的代幣合約在一個從地址到余額的映射中保存上述信息。當更多復雜的情景出現時,比如分紅,替代性結構或者增補性結構往往更強一些。
『貳』 3.7 錢包、帳戶、token、智能合約、action、許可權、權重和閥值之間關系
如圖所示,右邊是EOS Wallet錢包,裡面只存放私鑰及由該私鑰產生的公鑰(公私鑰對),而且錢包有一個密碼,需要輸入密碼才能解鎖錢包,讀取私鑰。錢包和賬戶沒有直接的關系左邊是EOS Account賬戶,可以把它看成是一個保險箱,裡面有EOS Token以及智能合約,而需要轉移裡面的EOS Token(或者執行智能合約),你需要錢包中對應的私鑰來解鎖這個保險箱。
創建一個賬戶的命令是:cleos create account {創建者賬戶名} {新的賬戶名} 公鑰1 公鑰2
其中{創建者賬戶名}是為這個創建動作支付EOS的賬戶,公鑰1和公鑰2分別是兩個不同許可權的密鑰對的公鑰。
所以把許可權系統加上,圖就變成上面這個樣子,一個保險櫃有兩個開關,不過打開後可以進行操作的許可權是不同的。2個私鑰可以存在一個錢包里,也可以如上圖所示存在不同的錢包里(由不同的人控制)。
owner許可權是賬戶的最高許可權,可以修改其它許可權。
active許可權默認可以進行轉賬等操作,但不能修改許可權。
每個保險箱有一個名字,就是EOS賬戶名。
轉賬和智能合約等操作的執行都是在Account這個保險箱進行,所以賬戶名在EOS世界其實是以太坊的地址。與以太坊不同,EOS的賬戶名不再是一串很長很長的地址,而是一個你可以自定義的英文字母+數字(12345)+符號(.),最長12位,最短1位,全局唯一,先到先得,注冊費用還沒公布,但據最新的消息,長度不同注冊需要的EOS也不一樣。
1、創建帳戶,首先要創建帳戶的公私鑰對,公私鑰對可以代表對應該賬號下的某個許可權的權重。帳戶使用公私鑰對事物進行簽名操作,讓區塊鏈節點確定事物中的活動是由某帳戶的哪個許可權授權的。
2、帳戶可以部署、載入合約,所以合約是屬於某個帳戶的,在EOS系統中1個帳戶只能有一個合約。
3、Token是由帳戶創建和發行的,發行的Token屬於帳戶。帳戶擁有Token,並且可以通過eosio.token合約中定義的活動轉賬給其他賬戶。
4、帳戶的公私鑰對是存放在錢包中,錢包僅僅是一個有名字有密碼的公私鑰對的容器。
5、一個實際用戶可以創建多個帳戶,用戶通過錢包中的公私鑰對管理對哪個賬戶的哪個許可權授權用於執行某個合約中的動作。
6、一個用戶可以擁有多個錢包,賬戶和錢包沒有直接的所屬關系只有使用關系即某個賬戶使用了某個錢包存放了自己的公私鑰對。
7、一個keosd錢包服務可以管理多個命名錢包,用戶可以通過錢包服務提取錢包中的公私鑰對其發起的事務進行簽名。
8、一個用戶可以開啟一個或者多個keosd錢包服務。
9、一個錢包中可以存放零個或者多個密鑰對。
10、一個帳戶可以擁有多種許可權。
11、每一個許可權都有一個使用該許可權的閥值。
12、每一個許可權都可以由一對或者多對密鑰及對應的權重來控制許可權的使用。
13、每一個密鑰都會有使用某許可權的權重,當擁有的密鑰對應的權重累計大於等於閥值即可使用該許可權。
14、每個對某個賬戶的某個活動都會需要對應的賬戶的許可權使用授權。
15、一個合約中可以定義多種不同的活動,賬戶調用對應的合約來執行不同活動。
綜上,我們通過一些列問題的問答來理解賬戶、錢包、token、合約、活動、許可權在EOS中的作用。
問答如下:
1、EOS系統中的主體是什麼?答:賬戶
2、有了賬戶能做什麼?答:做事務
3、怎麼做事務?答:通過合約
4、合約包含哪些依賴元素?答:(1)賬戶 (2)許可權 (3)token
5、許可權是什麼?怎麼管理?答:公私鑰對,通過錢包管理
6、什麼是token,怎麼使用? 答:做事物佔用了系統資源,需要花費gas(token)。
為了更好理解上述概念,我們不妨舉個生活中的例子:
生活中有這樣的三口之家,爸爸、媽媽、小孩
- 他們所居住的房間我們看作一個賬戶,房間都有一個唯一的且可被人為識別的地址(賬戶名稱),例如:某某小區12#1201
- 房間里有很多設施設備(電視、電腦、空調.......),我們把不同設備具有的功能看作智能合約里定義的活動功能
- 如果小孩想看電視(執行合約的動作),需要進入房間的授權(賬號許可權),能不能進入房間由是否持有爸爸或者媽媽的鑰匙(公私密鑰)決定。
- 爸爸、媽媽的鑰匙存放在各自的有密碼的鑰匙包(錢包)里。
- 小孩在得到爸爸或者媽媽的要鑰匙後(授權),就可以打開電視並收看(執行合約)。
- 看電視需要繳納電費(token),電費是按照房間地址(賬號名稱)收取的。
星河公鏈官網
3.7 錢包、帳戶、token、智能合約、action、許可權、權重和閥值之間關系-wx5ca1790914ac4的博客-51CTO博客
3.7 錢包、帳戶、token、智能合約、action、許可權、權重和閥值之間關系 - arm_snow的博客 - CSDN博客
『叄』 比特派 ETH、ERC20 Token 批量轉賬教程,好用!
功能簡介:
比特派的批量轉賬功能可以將你的ETH或ERC20的TOKEN 同時發送到多個地址(當前最多支持255個)。
優勢:
節省操作時間,節省礦工費。
操作教程:
1、打開比特派,在左上角切換到「ETH體系」點擊 「批量轉賬」
2、進入操作頁面後,首先確認自己用來付款的的幣種、地址。然後點擊加號【+】來添加收款方信息。
3、你可以選擇【從剪貼板獲取】或者【手動輸入】收款方信息。
當你選擇從剪貼板獲取時:
你需要按固定格式提前復制好相關內容,再點擊此按鈕才可添加成功。
格式為:
地址,金額 (地址和金額之間用英文的逗號分隔,多組信息之間需要換行)
例如:
0xc35f4f66ef......20db8f7d , 0.001
0xfe4503c78......4e4ae1ae , 0.002
如果您要處理的地址較多,建議使用電腦表格軟體進行整理,格式如下。
當你整理的地址在表格內顯示異常時,選中所有異常的表格,右鍵選擇單元格格式,並將單元格格式選擇文本。(不同的軟體操作步驟略有差異,核心操作在於將單元格文本格式選擇成文本。)
整理完成後,可通過微信等其他軟體將內容發送到手機並復制,打開批量轉賬頁面點擊加號+,選擇從剪貼板復制,即可批量添加收款信息。
當你選擇手動輸入時:
可以手動輸入地址、金額。也可以通過掃碼、地址簿添加等方式添加地址。
4、地址信息添加完成並確認無誤後,點擊確認轉賬,核對好相關信息後點擊確認,即可發出。等待合約確認後,便可查看所有的轉賬詳情。
『肆』 以太坊智能合約能關閉嗎
能。
可以訪問網站,然後連接上自己的錢包,就會讀取錢包中已經訂立了合約的Token項,然後點撤銷即可。
智能合約讓以太坊,去中心化應用具有無限想像力和更強大的生命力。智能合約可以處理各種業務邏輯,來充分地利用以太坊區塊鏈的能力,使得區塊鏈的擴展性更強,從而讓以太坊發展成為目前最大的一個區塊鏈開發平台。
『伍』 合約地址怎麼用
一個幣的合約地址可以用來查看該代幣的余額等具體信息,還可以查看詳細的合約內容。本質上來說,一個代幣合約就是一個包含了一個對賬戶地址及其餘額的映射的智能合約。賬戶余額表示一種由合約創建者定義的值:一個代幣合約也許使用余額來表示物理對象,或是表示另一種貨幣價值,還可以表示持有人的名望。余額的單位通常被稱為token。
當token從一個賬戶被轉移到另一個賬戶的時候,代幣合約更新兩個賬戶的余額。如果該token合約允許的話,改變token總體數量有兩種方案。token的總數可以通過鑄造新token來增加。舉個例子,鑄造出想要的token到具體的合約地址 。銷毀token的另一種方式是將token發送到一個未創建私鑰的地址,通常來說就是0地址。這會使得這些token不可用,在這方面,它與銷毀token有同樣的效果,但並沒有減少token的總數。簡單的代幣合約在一個從地址到余額的映射中保存上述信息。當更多復雜的情景出現時,比如分紅,替代性結構或者增補性結構往往更強一些。
拓展資料:什麼是代幣合約?
ERC20 合約是通過合約的地址以及可用的token總數來定義的,但通常還提供一些可選項目,也是為用戶提供更多細節。比如token的名字、符號、小數位等等。
在深入了解之前,必須明確一點:代幣合約沒有中心化的登記處,因此無法保證特定名字和符號的唯一性。一旦你創建了一個代幣合約,你應該申請將它加入公共站點,如Etherscan,MyEtherWallet 以及 CoinMarketCap。當然,確保符合網站上的說明,可以最大限度提高申請被接受的機會。
代幣合約的名字是代幣的完整名稱,比如「My token」。名字長度沒有限制,但是太長的話在某些錢包應用中可能顯示不完整,所以最好保持名字的簡潔。
代幣合約的符號是代幣的符號,比如「MYT」。大體相當於股票行情自動收錄機。盡管沒有長度限制,但通常都是三四個字元長度。
小數位這個概念通常容易混淆,通過解釋還是很容易理解的。小數位代表一個token的可分割程度,小數位可取值從0(完全不可分割)到18(幾乎是連續的),甚至還可以更高。技術上講,小數位的數字就是顯示在屏幕上小數點後面跟著的數字。存在小數位的意義在於以太坊不處理小數,將所有的數字價值都當做整數處理。
『陸』 蝙蝠token已過期啥意思
現在對Token比較通行的理解是將其看做「可流通的權益證明憑證」,簡稱「通證」。這個定義雖然相對准確並逐漸受人認可,但領域外的人並不熟悉。而Token本身的存在機理仍存在極大爭議。
token是什麼意思(token已過期錯誤啥意思)
本文將從Token和區塊鏈的關系入手,對Token形成的過程、Token的價值來源、Token和股權的關系等問題作出分析。
一、Token與區塊鏈的關系及其定義
區塊鏈技術可以用來不可篡改的保存兩類信息:一是描述、定義各類資源(資產)狀態的信息。例如一個人的信用記錄、一件商品、一個房產、一篇文學作品等;另一種是描述資產交易過程的信息*。總的來說:
1、Token必然存在且僅存在於有交易的區塊鏈項目中,並作為交易的基本單位。
2、擁有Token等同於擁有對區塊鏈上某類資源的索取權。例如擁有btc token等同於擁有轉出btc的權利。擁有eth token等同於擁有轉出eth 或支付交易費用或創建智能合約的權利。擁有eos token等同於擁有投票權,使用一定量計算、存儲、帶寬資源的權利。
3、從個案分析的角度,存在只保存第一類信息的項目,例如傳統互聯網、銀行、政府在國際貿易、商品溯源、公證中的應用。雖然在此類項目中可以不使用,也沒有必要使用Token,但從區塊鏈經濟整體來看,兩類信息缺一不可。因此區塊鏈與Token是共生的關系。
*註:Bitcoin的UTXO模型使得在具體實現層面只有交易歷史沒有賬戶余額,但從抽象的去看,Bitcoin仍然是有餘額和交易記錄兩類信息。
二、Token的形成
在涉及交易(或稱價值轉移)的區塊鏈項目中,交易信息因為不可篡改性和公開性,使得信息本身就可以在不需要第三方監督的條件下擁有價值傳遞的含義。案例說明如下:
「Alice給Bob一支花」,是一條文本信息。
在非區塊鏈環境中,只有在面對面交易中這句話才有價值傳遞含義,因為交易雙方可對這句話的執行情況進行當面澄清。但在沒有中介監督的情況下,Alice非面對面的向Bob說這句話,因為ALICE 可以隨時否認或篡改說話的內容,所以這句話並不具備價值轉移的作用。
在區塊鏈環境中,所有參與者在發送信息前首先要達成兩點共識:1、對信息代表意義的共識,例如上述文本信息中,花的種類,送花的時限等等(因舉例涉及鏈下實體,所以為討論簡便,假設鏈上和鏈下數據具有完全可信的預言機支持,均為不可篡改的真實信息)。2、如果違背了第一條後的懲罰措施,例如扣減信用、金錢懲罰、甚至永遠將不誠實者排除在外。
在這個共識基礎上,Alice簽名發送上述文本後,如果並沒有真的行動。那麼在不可篡改信息證實下,所有參與者在無限的未來中,都會知道Alice是一個不守信用的人。並將採用懲罰機制懲罰她。
我們將上述文本抽象之後,假設這個區塊鏈項目的用途是記錄Flower交易,並發行了Flower Token, 每一枚Token代表對一支花的索取權。那麼上述文本信息就變成了結構化信息:
「A trasfer 1 unit Token to B」。
至此,我們可以看到在有交易的區塊鏈項目中,無論是否設計專門的Token變數;是否有可進行Token轉賬的錢包;是否有可在二級市場交易的Token;Token都天然客觀存在。
三、Token 的價值內涵
從前述分析我們可以看出,Token的全部價值來自於共識。參與者賦予Token什麼樣的價值,它就代表了對哪些資源的索取權。*對Token的市值分析,不同項目都應根據其經濟模式採取不同的分析模型和框架。
註:狹義上的共識是寫在系統中由全部誠實節點必須共同遵守的約定,例如EOS對計算資源的索取權;廣義上的共識還包括部分人對Token用途的認同,例如1Btc在生態治理層面不代表任何資源,但逐漸有更多人願意用Btc換取更多種類的經濟產出或法幣。
1、Token的價值來源:
(1)以太坊ERC20代幣的數據結構統一,但不同項目的Token市值卻完全不同,刨除那些區塊鏈技術公司發行的ERC20,單純去看傳統公司的Token應用可更為清晰看到Token的價值來源。以Cindicator為例,該項目現在提供不同等級和豐富度的智能投顧研判信號,以持有Token(CND)數量的多寡作為Token持有者使用相應服務的門檻。Token價值完全由項目方本身在智能投顧領域的價值決定。
(2)賦予Token價值的絕不僅僅是創始項目方,而應歸於全部生態參與者。也就是說Token所代表之物是由變化的群體,和他們變化的共識決定。舉例來說,EOS ERC20 Token由官方賦予的價值是有權以1:1比例映射到EOS.IO系統中的持有人分布表中。在映射後,ERC20 Token就不再具有官方賦予的價值。但是這個代幣不會消失,如果持有人為其賦予了新增的例如說EOS創世持有人紀念Token,那麼它就有了新的可流通的意義。
2、Token與股票的關系:
(1)Token和股權並無必然聯系,Token是否可以代表持有人對公司的權益由發幣項目公司決定。但迄今為止,Token仍然可在全球范圍內自由(隨時、隨量)轉移,並沒有項目完全限制Token在不同轉移人之間的條件、流通范圍,須披露內容等,因此實際上與證券仍有較大的區別。
(2)區塊鏈經濟下將有越來越多的經濟活動從大企業、政府中釋放出來,由小企業、個人在市場和商業環境中由智能合約協調完成。在這樣的未來經濟形態下,本文認為對企業來說,以生態權益為導向將比以公司權益為導向更符合公司利益。換言之,代表生態價值的Token將極大擠壓股票的生存空間。但只要公司這種組織形式還在,那麼股票就仍然會與Token處於共生狀態。值得說明的是,在技術層面,股票的記錄和轉移也可能會採用區塊鏈技術來完成。
附、Token幾種譯法的辨析
按Wikipedia釋義,從經濟價值角度看Token,第一類含義是可用來代替錢使用的金屬塑料小圓片,即「代貨幣」,例如賭場中的籌碼。第二類含義是准錢幣,即硬幣或紙幣以外的代幣獎章、臨時通貨等;第三類是可用於兌換商品或服務的代金券和禮品卡。另一方面從信息技術角度看Token,指的是可操作某類計算資源的對象(Object,計算機術語)。
Token現在主要譯法有幣、代幣、通證等。首先,我們應對謹慎將Token視為貨幣的傾向。一個原因是貨幣作為一般等價物具有法償性,可以無條件在一國內使用,具有貨幣的完整功能(價值尺度、交易媒介、價值儲藏)。Token不具備無條件使用的功能和價值尺度功能,在邏輯上不具備貨幣的全部功能。另一個原因是「幣」讓人先入為主的認為Token代表的是金錢,極大限制了Token的含義范圍,容易令人忽視Token可以是所有鏈上資產交易的單位,可以代表對所有鏈上資產的索取權。
通證的全意是可流通的權益證明憑證,是現在最為准確並逐漸受人認可的翻譯,但領域外的人並不熟悉。而代幣,從字面意義上講,「代」指的是對某類資產或資源的索取權憑證;「幣」指的是可流通。例如我們日常生活中的游戲幣,一是說可以享有使用游戲設施的憑證;二是說游戲幣可與他人交換。所以代幣的譯法實際上與通證同義,可以混用。
『柒』 關於COIN和幾種TOKEN的分類
在幣圈我們經常問別人最近有沒有買什麼幣,但是這個幣其實有可能是COIN,也有可能是TOKEN。所以本文稍微捋一下COIN和TOKEN的定義。
COIN: 指得是作為支付媒介的數字貨幣,比如BTC、BCH、LTC以及DASH、XMR、ZCASH等等。它們的使用場景只是價值傳輸而已,除此之外並沒有其他的應用場景,它們只是作為一個去中心化的銀行存在著。COIN也是目前區塊鏈世界中的第一大應用,充當著價值傳輸和價值存儲的功能。
TOKEN有以下兩種:
Utility Token:即功能類Token,這種Token是有使用場景的,使用它可以購買某種服務,比如在以太坊上我們需要買一些ETH才能使用以太坊上的計算能力,我們購買一些SC才能使用它的雲服務。
ICO是被證實了的區塊鏈能夠有效提供的應用場景,所以ETH這個TOKEN才能成為當今第二大市值的虛擬貨幣,在2017年的時候,以太坊和比特幣一樣被認為是可以當作價值傳輸的媒介,甚至同時充當了價值存儲的載體。但是直到2018年之後ICO逐漸遇冷,以太坊的市值也一再萎縮,以太坊每年都會增發一定比例的ETH,但是當ICO的規模跟不上ETH的增發數量的時候,價格就會下跌,這就是為什麼V神考慮吧ETH總量設限的原因。
Security Token:即證券類Token,這種Token算做是證券,所以是要歸證監會(SEC)管的。關於判斷是否為證券由豪威測試(Howey test)決定:
1、Is it an investment of money or assets?
是不是屬於金錢或者資產的投資?
2、Is the investment of money or assets in a common enterprise?
這筆錢或者資產是投資到一個共同的企業裡面嗎?
3、Is there an expectation of profits from the investment?
是否期待從這筆投資中獲得利潤?
4、Does any profit come from the efforts of a promoter or third party?
這筆收益是不是來自於發起人或者第三方的努力?
滿足了以上四個條件,就屬於證券類。
2017年六月美國證監會宣布DAO Token屬於證券。因為購買DAO之後,如果有利潤的話,那麼DAO持有者的的確確是會有分紅的。
現在很多不同的交易所的平台都發行了自己的平台幣,比如說幣安幣BNB,其實大家都知道幣安幣的價格高低和幣安這個平台的發展息息相關,但是同樣的BNB可以抵消平台交易的手續費,並且可以使用BNB購買各種虛擬貨幣。這樣看起來真的是屬於Utility Token。而且因為法幣入口不穩定,交易所就自己創造出一個幣,讓大家都先花錢買它的幣,也就是先把錢存到它那。這同樣規避了一些監管的風險,比如用BNB購買虛擬貨幣的時候,我使用的是BNB(算是一種商品)購買ETH(另一種商品),用商品買商品,這樣可以規避掉很多監管風險。
但我認為這僅僅是其中一個功能而已,我認為大部分人購買BNB都是因為看好幣安的未來。幣安也是想和用戶一起發展,這本質上是在投資企業。但是幣安從來也不會承諾說公司發展好了,我會給持有BNB的人一些分紅,因為這樣的話這就觸及了豪威測試(Howey Test)。幣安用一種規避的方法,即用公司的利潤回購BNB,然後把這些BNB給銷毀掉,這樣市場上供應就變少了,BNB自然升值了。
歸根結底我們這些購買BTC或者ETH的大部分人是都在炒幣,都是想要通過買賣獲得利益。而在現實意義中,我們購買ETH的行為就像黃牛屯某個明星的演唱會門票,我們假設還有很多人想看演唱會——還有很多人想通過購買ETH使用智能合約,我們只是在假設全世界還有很多人會去使用區塊鏈。我們是在購買大量的演唱會門票而在等待門票漲價,但同時我們也可以去使用它去看演唱會。
這是因為數字貨幣同時具有功能性和投資性並且全球流通,它不像證券只能用來投資不能被使用。這是一種新興事物,還沒有相關的法律去完善它,任何一種新興的東西,它總是和以前的東西不一樣,所以法律總是滯後的。
參考資料:
1, 全球區塊鏈頂級會議 TOKEN SUMMIT 2017 一手信息解析
2, http://8btc.com/thread-147990-1-1.html
3, https://mp.weixin.qq.com/s?__biz=MzU3MDQzMzEzMg==&mid=2247485059&idx=1&sn=&chksm=9b9573&mpshare=1&scene=1&srcid=0406bUvDMNmuvOW3MWWTshfw&pass_ticket=aLDIIGSM3tYo%%2FH4Yn8hF%2B#rd
4, https://medium.com/startup-grind/understanding-the-difference-between-coins-utility-tokens-and-tokenized-securities-a6522655fb91
5, https://www.chainnews.com/articles/362600636952.htm
6, https://medium.com/@bonpay/security-tokens-vs-utility-tokens-1aa7531aabe8
『捌』 鏈下支付協議:微雷電microRaiden深入分析
microRaiden是雷電網路的簡化版本,是一種 低成本、可擴展、低延時 的 鏈下微支付 解決方案。 他將雷電網路中鏈下支付網路簡化為 P2P單向微支付通道 , 但保留了快速支付的優勢,降低部署難度,簡化支付流程。
微雷電基於以太坊開發, 是以太坊的二層支付協議。兼容ERC20/ERC223標准token介面,因此,可以直接將現有已部署在以太坊上的token和微雷電協議對接,而不需要進行token數據的遷移。
microRaiden是針對N對1 的商店模式而專門優化的一種支付通道,特點如下:
針對上述特點,以及微雷電設計初衷,它適用於下面的應用場景:
場景舉例:接收者提供很多網路資源(jpg, url, txt等等),每個資源可以分別設置單價。用戶訪問該資源時, 自動創建channel,並自動從channel的押金中扣去該資源的價格,之後也可以通過該channel多次訪問資源,每次訪問自動扣除相應的token。
microRaiden包括客戶端和服務端,客戶端即sender,每個sender都分別對應一個客戶端,服務端即receiver。
微雷電客戶端包括Session Client Channel等幾大數據結構,關系如下:
上面的圖是官方生成的, 了解一下3個主要結構的主要功能就行:
客戶端主要功能如下:
余額證明的含義是sender對當前channel的 最新一筆支付數據 進行簽名,證明sender已經對購買的資源進行了支付。 這里的余額實際上指的是該channel上已花費的token數量。
在初始化Client時需要同步鏈上的channel信息到本地。 同步流程如下:
該介面可以作為獲取channel的唯一入口, 其中包含了查詢已存在的channel, 新建一個channel的介面調用封裝。
實現鏈上channel相關的操作。
一句話概括: token轉賬動作自動觸發創建channel
一個sender如果希望和指定的receiver建立一條支付channel,並在這條channel上存款10token,只需要給ChannelContract合約地址轉入存款數目的token即可。注意: 所有地址的余額是保存在token合約中的,這里的地址不限於個人賬戶地址,也可以是普通合約的地址。
創建支付通道是由微雷電客戶端發起的,流程如下:
對於ERC20標準的token, 處理流程如下:
需要2筆交易: approve和createChannel
充值和創建類似, 只是data數據變成了:
同樣, 兼容erc20的流程如下:
需要2筆交易:approve和topUp
sender和receiver都可以發起channel關閉的請求,但是處理流程稍有不同:
Session是客戶端的核心,通過它可以完成購買資源的操作。
python的requests包是一個優秀的http操作包,可以方便地進行http交互操作,比如:
為了更方便的在微雷電中使用,對其進行擴展, 重新封裝了 get,options,head,post,put,patch,delete 這些requests介面。
在微雷電的客戶端中包含該擴展後的包,可以在http請求資源的同時,進行token鏈下支付操作。
例如post介面:
其中url是請求的資源路徑;
最後由Session.request執行。這個Session是對應每個sender的一個實例;
其中會不停地向伺服器請求資源( _request_resource ),直到返回結果或失敗。
上面請求資源的動作,就是從receiver中獲取資源並在channel中支付錢的過程。
流程如下:
4.2.3 簽名演算法是: 將type和name組成字元串形式的list,進行keccak256,將data組成list進行keccak256, 兩者結果再組合再一次進行keccak256 。
4.2.4 根據被簽名的數據和簽名結果恢復出簽名者地址
4.3 如果驗證通過,並且response.header中的SENDER_BALANCE和本地保存的sender余額一致,表示: 伺服器試圖將最後一次未經確認的付款偽裝為確認付款,返回失敗 。如果余額不一致,表示: 伺服器提供了不同的channel余額證據,本地採用該最新的余額,本地更新余額和余額簽名 。
4.4 如果驗證不通過, 伺服器 沒有 提供不同的channel余額證據,將本地余額更新為0.
4.5 無論驗證是否通過, 都需要進行下面的支付操作。
更新sender在該channel的balance和balance簽名。
後端服務提供付費資源管理及支付通道管理。啟動前需要傳入下面參數:
啟動過程如下:
付費資源包括靜態資源,動態資源,添加方法如下:
定義URI資源的支持的http方法:
資源的價格是固定的。
添加資源:
通過/echofix/foo 就可以獲取資源, 只有當支付5個token後,proxy才會返回foo給用戶,如果沒有支付,則會返回 402 Payment Required
定義URL資源:
domain參數指定獲取內容的遠端URL
『玖』 【ETH錢包開發04】web3j轉賬ERC-20 Token
在上一篇文章中講解了ETH轉賬,這一篇講一下ERC-20 Token轉賬。
【ETH錢包開發03】web3j轉賬ETH
1、直接用web3j的API
2、java/Android調用合約的 transfer 方法
不管用哪種方式來轉賬,你都需要先寫一個solidity智能合約文件來創建ERC-20 Token,然後部署合約,最後才是通過客戶端來調用。
注意:erc-20 token轉賬和eth轉賬的區別如下:
1、erc-20 token創建交易對象用的是這個方法 createTransaction
2、erc-20 token需要構建 Function ,它其實對應的就是erc-20 token合約中的那些方法。它的第一個參數就是ERC20中那幾個方法的名稱,第二個參數的話就是對應合約方法中的參數,第三個參數是和第二個參數對應的,按照我那樣就行了。轉賬的話就是 transfer ,我們從合約的 transfer 可以看到第一個參數是收款地址,第二個參數是金額,所以 Function 這里對應起來就好。
這種方法不需要使用web3j封裝的方法,而是直接調用solidity合約的方法。
步驟
1、web3j載入一個已經部署的合約
2、驗證合約是否載入成功 isValid
3、如何載入合約成功,則調用合約的 transfer 方法
注意:
1、這里的 TokenERC20 是根據solidity智能合約生成的對應的Java類,用於java/Android和智能合約交互的,如果你對這里不太清楚,不妨看看我之前的一篇文章。
以太坊Web3j命令行生成Java版本的智能合約
2、如果載入合約失敗,可能的一個原因是合約對應的Java類中的 BINARY 的值不對,這個值是你部署合約成功之後的bytecode,你最好檢查對比一下。
我發送一筆交易,可以通過這個地址查詢
https://rinkeby.etherscan.io/tx/
『拾』 理解ERC20代幣合約
ERC20代幣合約可以說在發幣中算是聽到非常多的一個名詞了,說到發幣都會想到這個合約。本文我們就談談如何理解ERC20代幣合約。
有關ERC20標准可以參考 官方文檔 ,可以說比較抽象,使用Solidity描述的ERC20的介面。
ERC-20最初作為一種嘗試,旨在為以太坊(Ethereum)上的token合約提供一個特徵與介面的共同標准,並且,它現在已經被證明是非常成功的了。ERC-20有很多好處,包括允許錢包顯示數以百計不同token的賬戶余額;創建一個交易工具,只需提供token合約的地址就可以將更多token列入表中。創建ERC-20兼容token的好處很多,以至於在今天,很少有其他token合約用其他方式創建。
目前依舊有「代幣(token)合約到底是什麼」的爭論。本質上來說,一個代幣合約就是一個包含了一個對賬戶地址及其餘額的映射的智能合約。賬戶余額表示一種由合約創建者定義的值:一個代幣合約也許使用余額來表示物理對象,或是表示另一種貨幣價值,還可以表示持有人的名望。余額的單位通常被稱為token。
當token從一個賬戶被轉移到另一個賬戶的時候,代幣合約更新兩個賬戶的余額。例如,從 0x2299…3ab7 轉移到 0x1f59…3492 10個token將導致余額列表如下圖所示進行更新:
如果該token合約允許的話,改變token總體數量有兩種方案。token的總數可以通過鑄造新token來增加。舉個例子,鑄造出100個token到地址 0x4ba5…ae22 余額變更如下圖所示:
也可以通過「銷毀」減少token總量,比如,0x4919…413d 銷毀50枚token將導致余額如下方式變化:
銷毀token的另一種方式是將token發送到一個未創建私鑰的地址,通常來說就是 0地址 。這會使得這些token不可用,在這方面,它與銷毀token有同樣的效果,但並沒有減少token的總數。比如, 0x93f1…1b09 用此種方式銷毀了50枚token將導致如下圖所示的余額:
簡單的代幣合約在一個從地址到余額的映射中保存上述信息。當更多復雜的情景出現時,比如分紅,替代性結構或者增補性結構往往更強一些。但是,不管操作上的細節的話,對外部可見的token余額總是像上面的圖示那樣的。
ERC20 合約是通過合約的地址以及可用的token總數來定義的,但通常還提供一些可選項目,也是為用戶提供更多細節。比如token的 名字 、 符號 、 小數位 等等。
在深入了解之前,必須明確一點:代幣合約沒有中心化的登記處,因此無法保證特定名字和符號的唯一性。一旦你創建了一個代幣合約,你應該申請將它加入公共站點,如Etherscan,MyEtherWallet 以及 CoinMarketCap。當然,確保符合網站上的說明,可以最大限度提高申請被接受的機會。
代幣合約的 名字 是代幣的完整名稱,比如「My token」。名字長度沒有限制,但是太長的話在某些錢包應用中可能顯示不完整,所以最好保持名字的簡潔。
代幣合約的 符號 是代幣的符號,比如「MYT」。大體相當於股票行情自動收錄機。盡管沒有長度限制,但通常都是三四個字元長度。
小數位 這個概念通常容易混淆,通過解釋還是很容易理解的。 小數位 代表一個token的可分割程度,小數位可取值從0(完全不可分割)到18(幾乎是連續的),甚至還可以更高。技術上講, 小數位 的數字就是顯示在屏幕上小數點後面跟著的數字。存在 小數位 的意義在於以太坊不處理小數,將所有的數字價值都當做整數處理。
總發行量 是ERC20代幣合約最後定義的項,而且是唯一一個強制參數。盡管在ERC20標准中沒有明確規定,但是定義 總發行量 十分簡單: 總發行量 等於所有餘額的總和。 總發行量 在上面的例子中已經給出,無須贅述。