以太坊交易所 以太坊交易所
Ctrl+D 以太坊交易所
ads

Libra硬剛微信、支付寶?教你如何在Libra上發布金融資產_TOKE:Data Transaction Token

Author:

Time:1900/1/1 0:00:00

本月17日,當Marcus被問到Libra未來是否會成為支付寶、微信的競爭對手時,Marcus對此表示了默認,“是的,議員。”但無論Libra未來的命運如何,也無論Libra將如何與微信、支付寶競爭,焦點都會回歸到金融資產發行的問題上,那如何用代碼實現?今天,營長手把手教你如何基于ERC20標準在Libra上發布金融資產。本文是「Libra編程」系列文章的第3篇,也是最后一篇。在之前的兩篇文章,我們分別探討了Libra項目的技術意義以及LibraClient與Validator內部處理與執行交易。Part1:被Libra刷屏的你絕對不知道,也許這才是它最大的"核武器"...Part2:關于Libra幣交易,你需要了解的一切...Libra作為法幣穩定幣,成為一個金融系統還需要具有債券股票以及各種證券資產與衍生品,本文將從技術角度入手,使用ERC20標準在Libra區塊鏈上發布金融資產。主要分為以下兩部分:編寫tokenmoudule編譯、部署tokenmoudule希望這個教程可以讓你對Libra的技術細節有更深刻的了解。編寫tokenmoudule如何使用MoveIR編寫一個簡單的tokenmodule?為方便理解,我們選擇Ethereum的ERC20token作為范例,分別執行mint、balanceOf和transfer三個功能。開始前,我們需要了解Libra與以太坊在處理resource的邏輯方面有什么不同。與Ethereumglobalstate不同的是,Libra并不設置統一集中存儲的globalresource,而是將resource分散在各個賬戶存放。因此,以太坊智能合約撰寫"addressstorageowner=0x"這類變量需要用不同的邏輯來實現。每個人擁有多少token也分別存放在各自賬戶的resource下,而不是采用"mapping(address=>uint256)"這樣的統一存儲方式處理。1、Capability

目前Libra開發團隊推薦的處理globalvariable的方式是使用一個singletonpattern的module來進行模擬。因此,我們將事件擁有所有者的(owner)權限定義為一種只能被發布一次的resource,比如"resourceT{}"。針對這個T進行的操作有兩個方法,一是在初始化時執行"grant()"用來確保TokenCapability被移交給所有者;而"borrow_sender_capability()"則是檢查操作者是否擁有所有者的權限。1moduleTokenCapability{2resourceT{}3//GrantTokenCapabilitytotheowner4publicgrant(){}5//ReturnanimmutablereferencetotheTokenCapabilityofthesenderifitexists.Thiswillonlysucceedifthetransactionsenderistheowner.6publicborrow_sender_capability():&mutR#Self.T{}7}grant()如何執行"grant()"?首先,我們需要定義兩個角色,調用這個函數的交易發起者與實際上的所有者owner。很可惜的是目前MoveIR并沒有提供類似"Self.published_address"的方式來讓我們獲得發布該module的賬戶,因此我們只能在代碼中寫死module所有者的地址,代碼如下:1//GrantTokenCapabilitytotheowner2publicgrant(){3letsender:address;4letowner:address;5lett:R#Self.T;67sender=get_txn_sender();89owner=0x1234;10//假設0x1234是所有者的地址11assert(move(sender)==move(owner),77);12//檢查交易發起者是否為所有者1314t=T{};15//為所有者建立新的TokenCapability16move_to_sender<T>(move(t));17//將TokenCapability.T轉移給所有者。18return;19}從上面的代碼中我們可以發現,只有通過"sender==owner"檢查才能取得所有者的resourceT,因此我們可以確保resourceT只會被所有者所擁有,其他的賬戶都沒有機會獲得這個resourceT。此外,"move_to_sender<structuretype>(resource)"是MoveIR提供的內建函數,它代表了將resource移交給交易發起者的賬戶。Borrow_sender_capability()如何檢查并確認交易發起者擁有所有者的resource?借助MoveIR提供的輔助函數"borrow_global<structuretype>(resourceaccount)"處理。borrow_global會去該賬戶下面調取出resource,如果該賬戶下沒有持有這個resource則會觸發意外情況,交易也會失敗。若成功則會返回可變的resourcereference。1//如果存在,則返回對交易發起者的TokenCapability的不可變引用。2//只有在交易發起者是所有者才會執行成功。3publicborrow_sender_capability():&mutR#Self.T{4letsender:address;5lett_ref:&mutR#Self.T;67sender=get_txn_sender();8t_ref=borrow_global<T>(move(sender));910returnmove(t_ref);11}2、Token

加密公司高管Q2向參議員Kirsten Gillibrand捐贈超過15萬美元:金色財經消息,據紐約州民主黨參議員Kirsten Gillibrand最新的籌款報告顯示,她從包括FTX首席執行官SBF以及Gemini創始人Cameron和Tyler Winklevoss在內的加密貨幣高管那里分別獲得了數千美元的捐贈。

據悉,Gillibrand與參議員Cynthia Lummis共同撰寫了一項全面的加密監管法案,并于6月發布。這項內容廣泛的提案提供了一個框架,將數字資產行業的哪些部分由美國SEC監管,哪些由CFTC監管進行了劃分,此外還包括一些其他政策。

在最近一個季度,風險投資家、開發者和行業團體紛紛參加Gillibrand的競選活動。根據她的第二季度報告,其捐贈者包括SBF和FTX US總裁Brett Harrison,他們分別捐贈了5800美元和2900美元。Multicoin Capital的四名成員,聯合創始人兼管理合伙人Kyle Samani,、管理合伙人Tushar Jain、合伙人John Robert Reed和總法律顧問Gregory Xethalis,總共向Gillibrand提供了1.94萬美元捐贈。

總的來說,在報告期內,加密行業參與者共向Kirsten Gillibrand捐贈了超過15萬美元。(The Block)[2022/7/16 2:17:00]

Libra的權限管理方式比較特別,上文已著重介紹,接下來撰寫Tokenmodule!1moduleToken{23importTransaction.TokenCapability;45//Tokenresource,代表一個賬戶的總余額.6resourceT{7value:u64,8}910//建立一個新的Token.T,value值為011publiczero():R#Self.T{12returnT{value:0};13}1415//返回Token的值16publicvalue(token_ref:&R#Self.T):u64{17return*&move(token_ref).value;18}1920//為交易發起者發布初始余額為0的Token21publicpublish(){}2223//`mint_to_address`只能由所有者調用.24//這會給收款人一個新的Token,價值是amount25publicmint_to_address(payee:address,amount:u64){}2627//Mint一個新的Token,價值是`value`.28mint(value:u64,capability:&mutR#TokenCapability.T):R#Self.T{}29//返回Token余額`account`.30publicbalanceOf(account:address):u64{}3132//返回交易發起者的Token余額.33publicbalance():u64{}3435//將`to_deposit`的token存入the`payee`\\'s賬戶36publicdeposit(payee:address,to_deposit:R#Self.T){}37publicwithdraw(to_withdraw:&mutR#Self.T,amount:u64):R#Self.T{}38//將Token從交易發起者轉到收款人39publictransfer(payee:address,amount:u64){}40}TokenResource整個Tokenmodule的結構如上。定義這個Token的resourceT{value:u64}代表了未來每個賬戶將會持有多少數量(T.value)的token,也要定義兩個跟T相關的輔助函數zero()制作一個數量為零的Token.T,value()回傳該Token.T的實際數值。Publish如同Capability一樣,每個賬戶都是分別持有自己的resource。Libra的設計邏輯中并不允許在沒經過某賬戶的同意下為其增加額外的resource,不像以太坊中只要有地址就可以收到別人的轉賬。因此,我們需要一個輔助函數供Token的所有者調用,為他們建立Token.T的resource。這是Publish負責的事情。1//為交易發起者publish一個初始余額為0的token23publicpublish(){4lett:R#Self.T;5//建立一個新的數值為0的Token.T6t=Self.zero();7//將Token.T轉移到交易發起者的賬戶下8move_to_sender<T>(move(t));9return;10}Minting讓賬戶擁有resourceToken.T的下一步便是發送一些token,因此接下來將具體解釋mint功能如何實現!1publicmint_to_address(payee:address,amount:u64){2letcapability_ref:&mutR#TokenCapability.T;3letmint_token:R#Self.T;45//使用TokenCapability來確保只有所有者有權限可以增發token6capability_ref=TokenCapability.borrow_sender_capability();78//呼叫下方的mint()來建立數量為amount的Token.T9mint_token=Self.mint(copy(amount),move(capability_ref));1011//將mint出來的Token.T合并到收款人的名下,這個函數我們在下面解釋。12Self.deposit(move(payee),move(mint_token));13return;14}1516mint(amount:u64,capability:&mutR#TokenCapability.T):R#Self.T{17//為確保只有交易發起者擁有TokenCapability.T,直接發布resource即可。18release(move(capability));1920//建立一個有amount數量的Token.T21returnT{value:move(amount。;22}增發token時,我們應先確保sender有增發的權限,如果沒有這個權限,transaction便會失效;然后建立要增發給payee的Token.T,最后通過Token.deposit函數將新建的Token.T與payeeaccount下的resourceToken.T合并。Balance增發token后,還缺乏查詢名下Token數量的方法,這就需要撰寫balance了!1publicbalanceOf(account:address):u64{2lettoken_ref:&mutR#Self.T;3lettoken_const_ref:&R#Self.T;4lettoken_val:u64;56//從該賬戶下取得resourcereference7token_ref=borrow_global<T>(move(account));89//因為我們沒有計劃改動resource的數值,因此把可變的reference凍結,改成不可變的reference10token_const_ref=freeze(move(token_ref));1112//調用value()來取得實際的余額13token_val=Self.value(move(token_const_ref));14returnmove(token_val);15}161718//這個balance()是直接包裝balanceOf(),提供交易發起者一個簡單的接口可以查詢。19publicbalance():u64{20letsender:address;21letbalance_val:u64;22sender=get_txn_sender();23balance_val=Self.balanceOf(move(sender));24returnmove(balance_val);25}轉賬Transfer重頭戲當然是轉賬,transfer一共分為三個步驟:從交易發起者借用resourceToken.T;將交易發起者的resourceToken.T分割成要轉賬的部分與余額(由withdraw函數負責);將交易發起者轉賬的部分與付款人的resourceToken.T合并(deposit函數負責)。因此整個transfer函數如下:1publictransfer(payee:address,amount:u64){2letto_pay:&mutR#Self.T;3letsender:address;4letto_withdraw:R#Self.T;56sender=get_txn_sender();78//借用交易發起者的resourceToken.T9to_pay=borrow_global<T>(move(sender));1011//分割出要給收款人的部分12to_withdraw=Self.withdraw(move(to_pay),move(amount));1314//將要給收款人的部分與收款人賬戶下原有的Token.T合并15Self.deposit(move(payee),move(to_withdraw));1617return;18}而Withdraw與Deposit實現如下:1publicdeposit(payee:address,to_deposit:R#Self.T){2letdeposit_value:u64;3letpayee_token_ref:&mutR#Self.T;4letpayee_token_const_ref:&R#Self.T;5letpayee_token_value:u64;67//取出要合并的數值8T{value:deposit_value}=move(to_deposit);910//獲得付款人的Token.Treference與現有的數值11payee_token_ref=borrow_global<T>(move(payee));12payee_token_const_ref=freeze(copy(payee_token_ref));13payee_token_value=Self.value(move(payee_token_const_ref));1415//修改付款人的Token.T的數值16*(&mutmove(payee_token_ref).value)=move(payee_token_value)+17move(deposit_value);18return;19}2021publicwithdraw(to_withdraw:&mutR#Self.T,amount:u64):R#Self.T{22letvalue:u64;2324//取得交易發起者的Token.T數量,并確認是否足夠支付這次轉賬25value=*(&mutcopy(to_withdraw).value);26assert(copy(value)>=copy(amount),10);2728//修改交易發起者的Token.T數量,并將分割后的Token.T轉出去29*(&mutmove(to_withdraw).value)=move(value)-copy(amount);30returnT{value:move(amount。;31}測試module

分析 | 火幣研究院:Libra能夠推出的可能性較大:近期Libra的進展給市場帶來了一定信心。一是10月15日首次理事會議召開,成立了理事會,董事會,并任命了執行團隊成員。在經歷了成員退出風波后Libra協會聯盟力量已經初步形成,剩余成員大部分對于金融監管不敏感,短期內應該不會再有退出現象。二是9月21日Libra儲備中貨幣比例確定為美元50%,歐元18%,日元14%,英鎊11%,新加坡元7%。

火幣區塊鏈研究院認為,Libra推出的概率非常大,首先,通過對比Libra儲備的貨幣占比和國際貨幣基金組織提出的SDR占比(美元42%,歐元31%,日元8%,英鎊11%,人民幣8%)可以看出,美元、日元、新元占比均有較大提升,而脫歐后的英國可能也需要另結聯盟,僅歐元被擠壓。為了贏得更高的國際地位,美元、英鎊、日元、新元及對應央行都可能支持Libra,此前美聯儲和英國央行態度也是中立偏積極。其次,支付和證券領域監管體系已經成熟,有據可依,且Libra團隊一直在主動與監管溝通,獲取資質只是時間問題。

?[2019/10/18]

一個mvir的檔案含有兩個區塊,分別是modules與script,在modules中會撰寫交易中需要部署的所有modules,script是在這次交易中我們想執行的程序。TestScript在我們的范例中,通過使用交易script的區塊來進行測試。在這個測試中,我們把交易發起者作為所有者,并且mint1314個token給交易發起者,最后檢查交易發起者的余額是否跟mint的數值:1314一致。1script:2importTransaction.TokenCapability;3importTransaction.Token;4main(){5letsender:address;6letbalance_val:u64;7letsender_balance:u64;8sender=get_txn_sender();910//Grantowner\\'scapability11TokenCapability.grant();1213//PublishanTokenaccount14Token.publish();1516//Mint1314tokenstotheowner17Token.mint_to_address(copy(sender),1314);1819//Checkbalance==131420balance_val=Token.balanceOf(copy(sender));21assert(copy(balance_val)==1314,2);22sender_balance=Token.balance();23assert(move(sender_balance)==move(balance_val),1);24return;25}測試在撰寫完modules與script后,依據Libra團隊的建議,需將檔案放入"language/functional_tests/tests/testsuite/modules/"下,并執行"cargotest-pfunctional_tests<filename>",Libra就會加載并將執行剛才所撰寫的合約,結果如下圖:編譯、部署到localtestnet

動態 | 華夏時報:應對Libra沖擊波 中國要有“備胎計劃”:華夏時報今日刊文《應對Libra沖擊波,中國要有“備胎計劃”》。文章提到,未雨綢繆,面對libra沖擊波,我國應有自己的“備胎計劃”,而不能僅僅停留在所謂的“監管”或“防控”上。盡快培植出我們自己的數字貨幣“攪局者”,以應對可能到來的Libra沖擊波,當下已經刻不容緩。相信只要監管層在方向上開了“綠燈”,憑借我國數字經濟、尤其是數字支付的普及程度,以及大型科技金融平臺歷年積累且經受考驗的技術厚度,我們完全有能力盡快打造出中國版的數字貨幣備胎,以防患于未然,以應對極可能出現的Libra沖擊波。[2019/7/24]

如今Libratestnet尚未開放直接部署modules,只能通過建立自己的localtestnet來進行測試。現在部署的工具還在非常早期的階段,對開發者的使用上也不是十分友好,以下是整理后的部署流程。1、編譯Libra后,可以在"targe/debug/"資料夾下找到compiler和transaciton_builder兩個工具;2、通過使用compiler將撰寫的mvir編譯成program,"./target/debug/compiler-o<output_file_name><input.mvir>";3、通過transaction_builder把sender,program、argument等封裝成rawtransaction,"./target/debug/transaction_builder<sender_address><sequence_number><path_to_program_file><output_transaction_file_name>--args";4、最后進到libracli中使用submit<sender_address/sender_account_ref><path_to_transaction_file>對Libracli發出交易。注:我們也編寫了幾筆交易的scripts用來操作Token請參考此鏈接:https://github.com/second-state/libra-research/tree/master/examples/ERC20Token/transaction_scripts部署與使用Token的順序1、先將token.mvir(含有Token、TokenCapability的module)部署到Libra;2、要想使用該token賬戶,必須先調用init.mvir將Token.T發布到賬戶的resource中;3、所有者可通過mint.mvir給其他擁有resourceToken.T的賬戶增發token;4、兩個擁有resourceToken.T的account可以通過transfer.mvir進行token轉移。開啟允許部署modules的權限

動態 | Ripple CEO談論美國銀行的非實用專利以及Libra對Ripple的影響:據AMBCrypto消息,Ripple CEO Brad Garlinghouse在最近接受彭博采訪時談到了美國銀行的非實用專利。他表示,“我既不能證實也不能抹殺它,眾所周知,我們廣泛地與世界各地的銀行合作,當然,世界上一些最大的銀行是我們的客戶;我們將繼續與銀行合作。我也對此感到驚訝。”這項專利沒有提到XRP,但是讓XRP愛好者精神振作。美國銀行的非實用專利聲明,“需要一種靈活且成本效益高的會計處理方法,并需要用于實施該方法的系統。” 在談到Libra及其對Ripple的影響時,他表示,金融機構和美國政府的監管都很重要。Libra聽證會是加密空間的墊腳石,也是一筆巨大的交易。然而,Garlinghouse表示,這也將導致利用加密貨幣并構建一些有用東西的合法企業和初創企業陷入困境。“就連總統也出來發推說‘我不喜歡加密貨幣’。這很像在1997年對互聯網公司說的話。”他還表示,Libra的做法與Ripple的做法相反,因為它目前與很多銀行、金融機構和監管機構合作。[2019/7/24]

Libra在編譯時期(compilation-time)時從genesisfile里面讀取是否可以設定部署modules的權限。因此,為把modules部署到localtestnet,我們需要在編譯前修改這項設定。在"language/vm/vm_genesis/genesis/vm_config.toml"這個檔案,只需將""中的"type=Locked"改為"type=Open"即可。更改完以后,一定要重新編譯使設定生效。參考鏈接:1、SingletonPatternCapability:https://community.libra.org/t/any-notion-of-global-variables/355/22、TokenCapability:https://github.com/second-state/libra-research/blob/master/examples/ERC20Token/token.mvir#L33、TokenSourceCode:https://github.com/second-state/libra-research/tree/master/examples/ERC20Token

聲音 | 螞蟻金服李振華:Libra不會成為信用貨幣 Libra的出現則打破了銀行代理機制:據21世紀經濟報道消息,在北京大學舉辦的數字金融研究開放計劃啟動儀式暨第一次學術研討會上,螞蟻金服集團研究院執行院長李振華表示,Libra主要發揮的是貨幣的支付功能,不具備投資價值和儲藏功能。以穩定幣的方式不產生通縮、通脹。市場擔心未來Libra是否會放大成為信用貨幣。對此,李振華認為,Libra與一籃子貨幣按照1:1的方式兌換,類似于港幣的發行機制:錨定美元,具有聯席會議制度,以一定的比例發行,目的就是不讓其成為信用貨幣,創造貨幣乘數。如果其成為信用貨幣,則需要關注其清償機制如何,誰去作擔保,Libra的項目協會不會承擔這樣的功能。此外,他表示,在跨境貿易中,貨幣結算是巨大的痛點。由于不存在全球化央行,要通過銀行層層代理機制完成結算,所以通過SWIFT的再代理機制。而Libra的出現則打破了代理機制。對于反洗錢、反恐融資問題,可以按照現在的原則進行。[2019/7/8]

Tags:KENTOKENTOKETOKChicken ZillaData Transaction TokendbktokenGro DAO Token

歐易交易所app下載
Coinbase UK下架Zcash是因為監管?匿名幣前景或受阻_OIN:COI

8月14日,據Cryptobriefing報道,CoinbaseUK將匿名幣Zcash下架的真正原用原來因為一家清算銀行ClearBank不滿Zcash在交易時使用的“屏蔽交易地址”功能.

1900/1/1 0:00:00
Libra聽證會實錄:Libra不會與美元競爭,并將與國稅局合作_BOO:LIBERA

本文來自碳鏈價值,Odaily星球日報經授權轉載。DavidA.Marcus在聽證會現場北京時間7月16日22:00,美國參議院銀行、住房與城市事務委員會就Facebook近期主導的libra項.

1900/1/1 0:00:00
炒幣,憑的是努力、運氣,還是底層邏輯的較量_區塊鏈:比特幣匯率美元

LongHash對比特幣購買價格做了一個統計,自從中本聰于2009年1月3日推出比特幣以來,直到7月初,任意時間購買比特幣,98.4%的時間里都是盈利的,只有60天是虧損的.

1900/1/1 0:00:00
資金盤與交易所“相互寄生”,只要給錢就能上幣_區塊鏈:TOK

編者按:本文來自一本區塊鏈,作者:比薩,星球日報經授權發布。進入2019年年中之后,資金盤圈流量開始大舉殺入幣圈。交易所需要流量,資金盤需要平臺,二者一拍即合,相互寄生.

1900/1/1 0:00:00
美國SEC再推遲比特幣ETF提案,大盤行情進入尾聲_比特幣:ETF

昨天,美國證券交易委員會(SEC)推遲就比特幣ETF的三項提議做出決定,Bitwise和VanEck/SolidX提案的最終決定預計將分別于10月13日和18日做出.

1900/1/1 0:00:00
以太坊:五層金融網絡詳解_以太坊:ETH

編者按:本文來自藍狐筆記,作者:DavidHoffman,翻譯:HQ,Odaily星球日報經授權發布.

1900/1/1 0:00:00
ads