比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads

接入去中心化預言機Chainlink喂價開發DeFi看漲期權交易平臺實例-ODAILY_LINK

Author:

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

DeFi這個大類下包含許多智能合約應用場景,如區塊鏈投票、去中心化彩票、流動性挖礦以及去中心化交易平臺。本文將教大家如何使用Chainlink喂價預言機在以太坊主網上用Solidity開發簡單的看漲期權DeFi交易平臺。當然,你也可以將這個實例稍作修改,開發一個看跌期權交易平臺。這個平臺擁有一個強大的功能,那就是所有價值轉移都通過智能合約進行,交易雙方可以繞過中間方直接展開交易。因此,這個過程不包含任何第三方,只包含智能合約和去中心化的Chainlink喂價,這就是最典型的DeFi應用。開發一個去中心化期權交易平臺將涵蓋以下內容:

在Solidity中對比字符串

將整數轉換成固定位數的小數

創建并初始化一個通證接口,比如LINK

在用戶/智能合約之間轉移通證

批準通證轉移

SafeMath

智能合約ABI接口

用require()執行交易狀態

以太坊msg.Value及其與通證價值交易的區別

在int和uint之間進行轉換

應付的地址

最后,用Chainlink數據聚合商的接口獲取DeFi價格數據

各位可以去GitHub和Remix上查看相關代碼。在我們正式開始前,先來簡單介紹一下什么是期權合約。期權合約讓你有權選擇在某個期限前以約定的價格執行交易。具體而言,如果期權合約內容是買入股票或通證等資產,則被稱為看漲期權。另外,本文的示例代碼可以稍作修成看跌期權。看跌期權與看漲期權正好相反,其內容不是買入資產而是賣出資產。以下是期權相關的一些專有名詞:

行權價格:約定的資產買進/賣出價格

期權費用:購買合約時支付給賣家的費用

到期日:合約終止的時間

行權:買家行使其權利以行權價格買賣資產的行為

無論是開發看漲期權還是看跌期權,都需要導入、構造函數和全局變量這些基本元素。

pragmasolidity^0.6.7;

import"https://github.com/smartcontractkit/chainlink/blob/develop/evm-contracts/src/v0.6/interfaces/LinkTokenInterface.sol";

import"https://github.com/smartcontractkit/chainlink/blob/master/evm-contracts/src/v0.6/interfaces/AggregatorV3Interface.sol";

import"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/SafeMath.sol";

contractchainlinkOptions{

//溢出安全操作符

usingSafeMathforuint;

//喂價接口

AggregatorV3InterfaceinternalethFeed;

AggregatorV3InterfaceinternallinkFeed;

//LINK通證接口

LinkTokenInterfaceinternalLINK;

uintethPrice;

uintlinkPrice;

Dmail:將接入由WorldcoinID登陸并使用Dmail跨鏈通信服務:4月3日消息,Dmail Network創始人James在社交媒體上宣布Dmail即將接入由WorldcoinID登陸并使用Dmail跨鏈通信服務,獲得Worldcoin官方和創始團隊點贊支持。據悉Dmail早前已獲得WorldCoin ID白名單接入支持,Dmail將是首批接入Worldcoin的Web3落地服務場景。

Worldcoin是由OpenAI首席執行官Sam Altman創立的加密初創公司Worldcoin宣布推出World ID協議和軟件開發工具包。Worldcoin表示World ID是一個注重隱私的去中心化身份協議,用于證明用戶是獨特、真實的個人,而無需提供電子郵件等身份證明[2023/4/3 13:41:32]

//預計算字符串哈希值

bytes32ethHash=keccak256(abi.encodePacked("ETH"));

bytes32linkHash=keccak256(abi.encodePacked("LINK"));

addresspayablecontractAddr;

//期權以結構數組形式儲存

structoption{

uintstrike;//PriceinUSD(18decimalplaces)optionallowsbuyertopurchasetokensat

uintpremium;//Feeincontracttokenthatoptionwritercharges

uintexpiry;//Unixtimestampofexpirationtime

uintamount;//Amountoftokenstheoptioncontractisfor

boolexercised;//Hasoptionbeenexercised

boolcanceled;//Hasoptionbeencanceled

uintid;//UniqueIDofoption,alsoarrayindex

uintlatestCost;//Helpertoshowlastupdatedcosttoexercise

addresspayablewriter;//Issuerofoption

addresspayablebuyer;//Buyerofoption

}

optionpublicethOpts;

optionpubliclinkOpts;

//Kovan喂價:https://docs.chain.link/docs/reference-contracts

constructor()public{

//以太幣/美元的Kovan喂價

ethFeed=AggregatorV3Interface(0x9326BFA02ADD2366b30bacB125260Af641031331);

//LINK/美元的Kovan喂價

linkFeed=AggregatorV3Interface(0x396c5E36DD0a0F5a5D33dae44368D4193f69a1F0);

//Kovan上的LINK通證地址

LINK=LinkTokenInterface(0xa36085F69e2889c224210F603D836748e7dC0088);

contractAddr=payable(address(this));

}

在導入時,我們需要接入Chainlink的數據聚合商接口實現喂價功能,并接入LINK通證接口。最后,我們導入OpenZeppelin的SafeMath?合約,這是執行內置溢出檢查運算的標準庫,而Solidity的內置操作符中不包含溢出檢查。

加拿大國有電力供應商BC Hydro將暫停向還未接入的比特幣礦場供電:12月23日消息,加拿大不列顛哥倫比亞省國有電力供應商BC Hydro將暫停向還未接入以及處于接入早期的比特幣礦場供電18個月的時間。BC Hydro表示,加密貨幣挖礦會消耗大量的電力但并未創造很多的就業機會。[2022/12/23 22:03:17]

接下來,我們重新定義運算類型和uint,使用導入的SafeMath,定義我們的喂價、LINK接口、價格變量,計算以太幣和LINK字符串的keccak256哈希值,以及地址變量來儲存我們的合約地址。要注意一點,地址被定義為“應付”,因為我們的合約需要用這個地址收款。接著,在構建完成后將接口初始化成Kovan合約地址,這樣就可以調用合約函數,并用“address(this)”設置合約地址。我們再將地址轉換成“應付”,因為否則address()會返回無法支付的地址類型。至于期權本身的數據類型,可以用一個結構數組,也可以用結構鏈表。使用標準數組的好處是我們可以直接訪問期權,這是鏈表無法做到的,但同時,刪除標準數組中的值計算成本非常高。因此,我們不對期權做刪除操作,而只將它們標記為“到期”或“取消”,這樣就能犧牲儲存空間以換取計算速度和簡便性。最后,期權的買賣和行權可以通過O(1)operations降低gas費用。

Chainlink喂價

//返回最新的LINK價格

functiongetLinkPrice()publicviewreturns(uint){

(

uint80roundID,

intprice,

uintstartedAt,

uinttimeStamp,

uint80answeredInRound

)=linkFeed.latestRoundData();

//如果這輪還沒有結束,則timestamp是0

require(timeStamp>0,"Roundnotcomplete");

//價格永遠不會是負數,因此可以將int轉換成uint

//價格小數點后有8位,之后需要增加10位變成18位。

returnuint(price);

}

我們首先實現的是兩個getter函數,獲取以太幣和LINK喂價。以太幣的函數與上方LINK函數一樣,唯一不同的是接入以太幣喂價。這會調用latestRoundData()函數查看我們初始化的喂價,并且會自動返回最新的去中心化市場聚合價格數據。因為這是一個view函數,所以甚至連gas費也用不著!我們對默認喂價getter函數做了一個調整,將價格從int轉換成uint,以匹配之后使用uint的函數。這里要注意一點,這樣轉換是ok的,因為價格永遠不可能是負數,所以不會用到int的符號位。在類型之間轉換的時候需要考慮到這些細節。

寫一個看漲期權合約

//允許用戶寫保持看漲期權

//接收的通證類型,行權價格,期權費用,到期日,合約中的通證數量

functionwriteOption(stringmemorytoken,uintstrike,uintpremium,uintexpiry,uinttknAmt)publicpayable{

bytes32tokenHash=keccak256(abi.encodePacked(token));

require(tokenHash==ethHash||tokenHash==linkHash,"OnlyETHandLINKtokensaresupported");

updatePrices();

if(tokenHash==ethHash){

PlatON正式接入跨鏈錢包Coin98:6月1日消息,PlatON宣布與跨鏈錢包Coin98達成合作,并已接入Coin98 Super App。Coin98將在PlatON高性能公鏈及生態系統中提供一站式無縫跨鏈體驗,雙方將憑借在Web3和隱私數據安全領域的豐富經驗,為200余萬用戶提供GameFi、NFT、DeFi等應用入口。[2022/6/1 3:56:51]

require(msg.value==tknAmt,"IncorrectamountofETHsupplied");

uintlatestCost=strike.mul(tknAmt).div(ethPrice.mul(10**10));//以以太幣計價的行權費用,小數點位數調整

ethOpts.push(option(strike,premium,expiry,tknAmt,false,false,ethOpts.length,latestCost,msg.sender,address(0)));

}else{

require(LINK.transferFrom(msg.sender,contractAddr,tknAmt),"IncorrectamountofLINKsupplied");

uintlatestCost=strike.mul(tknAmt).div(linkPrice.mul(10**10));

linkOpts.push(option(strike,premium,expiry,tknAmt,false,false,linkOpts.length,latestCost,msg.sender,address(0)));

}

}

初始設置完成并接入喂價后,我們接下來就可以調用函數了,先來寫一個期權合約。賣家調用writeOption函數,并填入期權具體的參數,小數點后保留18位。這里必須要明確小數點位數,以確保合約中使用的所有參數都格式統一。比如,整數777沒有小數點,但是如果我們規定的邏輯是保留兩位小數,則表示成7.77。我們這里的規則是小數點后保留18位,因為以太幣和LINK都是18位小數。如果小數點后不到18位,則可以添加0變成18位。接下來,我們就可以第一次使用之前計算出的以太幣和LINK字符串哈希值。為了明確賣家的期權合約針對的是什么通證,我們需要比較字符串。然而Solidity不支持在字符串之間進行==操作,因為其長度是動態的。我們不需要寫一個函數一個個字節地比較字符串,而只需用keccak256哈希函數計算每個字符串的32位哈希值,并直接對比。只要哈希值一樣,字符串就一樣。現在我們知道賣家用的是哪種通證,就可以有的放矢了。如果是以太幣,我們就可以用msg.value確認轉賬到期權合約的以太幣數量是否正確。我們可以用require()函數嚴格執行。如果require的第一個字段為false,則交易會被拒絕,無法進行下去。這樣一來,我們可以確保所有期權合約的轉賬都完全符合之前約定的金額。檢查通過后,我們就可以創建期權合約,提供所有必須的字段生成結構。基于當前以太幣價格,使用SafeMath函數而非內置操作符計算當前行使期權的費用。使用Chainlink的updatePrices()helper函數獲取當前價格,這個函數會更新全局以太幣和LINK價格。注意ethPrice要乘以10的10次方。這樣做是因為Chainlink喂價返回的是8位小數的美元價格,但正如上文所述,我們現在的標準是18位小數。所以添加10個零可以將其調整成18位小數,符合以太幣和LINK通證的格式。最后,我們將期權的結構壓入ethOpts的數組中,這樣期權合約就寫完了,而且里面有足夠的資金。

針對一枚LINK通證寫一個LINK期權合約,設定Unix到期時間,行權價格為10美元,期權費用為0.1個LINK。

聯通數科:“聯通鏈”全面接入國家級區塊鏈基礎設施建設:金色財經報道,3月14日,從中國聯通方面獲悉,聯通數科已于日前入選“星火·鏈網骨干節點技術供應商”。這標志著由聯通數科和聯通研究院等單位自主研發的“聯通鏈”技術將全面運用到“星火·鏈網”這一國家級區塊鏈基礎設施的建設之中。

中國聯通方面表示,“聯通鏈”打造的能力布局,從底層跨鏈協同、跨云部署、多鏈框架、國密改造,到應用層隱私計算、分布式數字身份、多方協作等完整能力體系,并以聯通鏈BaaS管理平臺進行統一納管,形成了“自主可控、端網融合、跨云跨鏈、開放合作”的特點。(新京報)[2022/3/14 13:55:53]

如果是LINK期權合約,那么就需要做一些修改了。Msg.value只提供交易中以太幣的金額。因此如果要確保LINK的金額充足,我們需要直接接入LINK通證合約。我們之前已經導入并初始化了LINK通證接口,因此可以訪問所有LINK通證函數,其中一個是transferFrom(),這個函數可以將LINK從一個地址轉移到另一個地址。當然,我們不能讓任何合約都可以隨便轉移你的LINK資產,所以必須首先調用LINK的approve()函數,并具體說明允許轉移的LINK數量以及轉移到的合約地址。

合約ABI接口

當你在Etherscan上查看合約時,會出現兩個tab,即:ReadContract和WriteContract。你可以用這兩個tab與合約進行交互。比如:LINK通證主網合約。Etherscan知道這些函數是什么以及如何通過合約的ABI調用函數。使用JSON格式調用ABI,規定函數調用參數。在主網上可以直接調用,但是在Kovan上的LINK合約需要導入這個模塊。各位可以在LinkToken的Github上查看ABI。所幸,在生產系統中,這些都可以用web3js的界面來處理,用戶可以用一個簡單的MetaMask請求來進行批準。但在我們這個開發實例中,暫時需要手動操作。

用導入的ABI通過MEW與Kovan上的LINK合約交互。

批準Kovan上的LINK合約轉入/轉出100個LINK通證。

購買看漲期權

//購買看漲期權,需要通證,期權ID和付款

functionbuyOption(stringmemorytoken,uintID)publicpayable{

bytes32tokenHash=keccak256(abi.encodePacked(token));

require(tokenHash==ethHash||tokenHash==linkHash,"OnlyETHandLINKtokensaresupported");

updatePrices();

if(tokenHash==ethHash){

require(!ethOpts.canceled&&ethOpts.expiry>now,"Optioniscanceled/expiredandcannotbebought");

//買家支付期權費

require(msg.value==ethOpts.premium,"IncorrectamountofETHsentforpremium");

//賣家收到期權費

ethOpts.writer.transfer(ethOpts.premium);

ethOpts.buyer=msg.sender;

合規穩定幣TUSD即將接入MDEX并開啟聯合挖礦:合規穩定幣TUSD將于7月14日20:00(GMT+8)上線MDEX(BSC)并開啟聯合挖礦活動。用戶提供TUSD-BUSD流動性可參與MDEX流動性挖礦,活動周期14天,獎勵價值約10萬美金的MDEX;同時開啟“董事會挖礦”,抵押MDEX可挖TUSD,活動周期14天,獎勵價值10萬美金的TUSD。

MDEX致力于打造集DEX、IMO、DAO為一體的DeFi平臺,為更多優質資產提供一站式流動性服務,為用戶提供更加安全可信、資產多樣、高性價比的交易體驗。

TUSD是全球透明,完全抵押并經鏈上實時驗證的美元穩定幣。目前已上線幣安、火幣、Poloniex等70+中心化交易所,并在數十個DeFi交易及借貸平臺中流通。TUSD經全美最大的會計公司之一Armanino實時審計,用戶可隨時通過官網trueusd獲取公開的審計結果。[2021/7/14 0:51:28]

}else{

require(!linkOpts.canceled&&linkOpts.expiry>now,"Optioniscanceled/expiredandcannotbebought");

//將期權費從買家轉給賣家

require(LINK.transferFrom(msg.sender,linkOpts.writer,linkOpts.premium),"IncorrectamountofLINKsentforpremium");

linkOpts.buyer=msg.sender;

}

}

現在期權合約創建完成且資金充足。接下來就等人來買了!買家只需表明購買以太幣或LINK期權的意愿以及期權ID即可。由于期權數組被定義成公開的,因此可以直接查看,無需支付gas費,買家可以查看所有期權合約及其ID字段。選擇完期權合約后,我們再次調用require()函數驗證期權費用的支付金額是否正確。這次,我們不僅需要確認msg.value,還需要將期權費用轉給賣家。Solidity中的所有以太幣地址都有一個address.transfer()函數,我們調用這個函數將期權費用從合約轉賬給賣家。然后設置期權合約的買家地址字段,就完成購買了!如果是LINK的話,操作就稍微簡單一些。可以用transferFrom函數直接將買家的期權費轉賬給賣家。如果是以太幣的話,期權費則需要先經過合約再到賣家地址。

行使期權

//行使看漲期權,需要通證,期權ID和付款

functionexercise(stringmemorytoken,uintID)publicpayable{

//如果期權沒到期且還沒有被行使,則允許期權所有者行使

//要行使期權,買家需向賣家支付行權價格*數量的金額,并獲得合約中約定數量的通證

bytes32tokenHash=keccak256(abi.encodePacked(token));

require(tokenHash==ethHash||tokenHash==linkHash,"OnlyETHandLINKtokensaresupported");

if(tokenHash==ethHash){

require(ethOpts.buyer==msg.sender,"Youdonotownthisoption");

require(!ethOpts.exercised,"Optionhasalreadybeenexercised");

require(ethOpts.expiry>now,"Optionisexpired");

//符合條件,進行付款

updatePrices();

//行權費用

uintexerciseVal=ethOpts.strike*ethOpts.amount;

//接入Chainlink喂價換算成以太幣

uintequivEth=exerciseVal.div(ethPrice.mul(10**10));//將喂價的8位小數轉換成18位

//買家支付與行權價格*數量等值的以太幣,行使期權。

require(msg.value==equivEth,"IncorrectLINKamountsenttoexercise");

//向賣家支付行權費

ethOpts.writer.transfer(equivEth);

//向買家支付合約數量的以太幣

msg.sender.transfer(ethOpts.amount);

ethOpts.exercised=true;

}else{

require(linkOpts.buyer==msg.sender,"Youdonotownthisoption");

require(!linkOpts.exercised,"Optionhasalreadybeenexercised");

require(linkOpts.expiry>now,"Optionisexpired");

updatePrices();

uintexerciseVal=linkOpts.strike*linkOpts.amount;

uintequivLink=exerciseVal.div(linkPrice.mul(10**10));

//買家行權,向賣家支付行權費

require(LINK.transferFrom(msg.sender,linkOpts.writer,equivLink),"IncorrectLINKamountsenttoexercise");

//向賣家支付合約數量的LINK通證

require(LINK.transfer(msg.sender,linkOpts.amount),"Error:buyerwasnotpaid");

linkOpts.exercised=true;

}

}

對于期權所有者來說,以太幣或LINK的價格如果超過行權價格,就能獲利。這樣一來,他們便愿意行使期權,以行權價購買通證。這次我們必須先確認幾個條件,即:合約由消息發送者所有;合約還未行權;以及現在期權還沒到期。如果以上任何一個條件不滿足,則撤回交易。

示例:交易未滿足一個或以上條件時Remix輸出的結果。

如果條件都滿足,則向賣家支付行權費,并向買家支付合約數量的通證。行權時,買家需以行權價購買每一個通證。然而,行權價是以美元計價,而合約數量是以以太幣或LINK計價。因此我們需要接入Chainlink喂價計算與行權費等值的以太幣或LINK數量。換算成等值的以太幣或LINK后,我們就可以開始轉賬了。轉賬時需使用之前提過的方法,即以太幣會調用msg.value/address.transfer函數,LINK則調用transferFrom()函數。

以上就是成功行使期權的完整交易過程。LINK價格是11.56美元,合約行權價格是10美元,數量1個LINK。也就是說,買家只需要花10美元而不是11.56美元購便可購買一個LINK。10/11.56=0.86,即買家只需要花0.86個LINK就可以獲得1個LINK。算上0.1LINK的期權費用,總共獲利0.04LINK。

取消合約/刪除資金

//允許賣家取消合約或從沒有成功達成交易的期權中退回資金。

functioncancelOption(stringmemorytoken,uintID)publicpayable{

bytes32tokenHash=keccak256(abi.encodePacked(token));

require(tokenHash==ethHash||tokenHash==linkHash,"OnlyETHandLINKtokensaresupported");

if(tokenHash==ethHash){

require(msg.sender==ethOpts.writer,"Youdidnotwritethisoption");

//必須還沒有被取消或購買

require(!ethOpts.canceled&&ethOpts.buyer==address(0),"Thisoptioncannotbecanceled");

ethOpts.writer.transfer(ethOpts.amount);

ethOpts.canceled=true;

}else{

require(msg.sender==linkOpts.writer,"Youdidnotwritethisoption");

require(!linkOpts.canceled&&linkOpts.buyer==address(0),"Thisoptioncannotbecanceled");

require(LINK.transferFrom(address(this),linkOpts.writer,linkOpts.amount),"IncorrectamountofLINKsent");

linkOpts.canceled=true;

}

}

//允許賣家從到期、未行使以及未取消的期權中贖回資金。

functionretrieveExpiredFunds(stringmemorytoken,uintID)publicpayable{

bytes32tokenHash=keccak256(abi.encodePacked(token));

require(tokenHash==ethHash||tokenHash==linkHash,"OnlyETHandLINKtokensaresupported");

if(tokenHash==ethHash){

require(msg.sender==ethOpts.writer,"Youdidnotwritethisoption");

//必須是到期、未行使且未取消的狀態。

require(ethOpts.expiry<=now&&!ethOpts.exercised&&!ethOpts.canceled,"Thisoptionisnoteligibleforwithdraw");

ethOpts.writer.transfer(ethOpts.amount);

//將取消標志修改為true,避免多次贖回

ethOpts.canceled=true;

}else{

require(msg.sender==linkOpts.writer,"Youdidnotwritethisoption");

require(linkOpts.expiry<=now&&!linkOpts.exercised&&!linkOpts.canceled,"Thisoptionisnoteligibleforwithdraw");

require(LINK.transferFrom(address(this),linkOpts.writer,linkOpts.amount),"IncorrectamountofLINKsent");

linkOpts.canceled=true;

}

}

隨著市場波動,如果期權還沒賣出去,賣家可能會取消期權合約并贖回資金。同樣地,期權如果一直未行使就到期了,賣家肯定會想要贖回合約中的資金。因此,我們添加了cancelOption()和retrieveExpiredFunds()函數

這兩個函數最關鍵的一點是必須滿足贖回條件才能調用成功。賣家要贖回資金必須滿足特定的條件,而且只能贖回一次。賣家不能取消已經被賣出的合約,因此我們要確認買家地址仍然是初始值0。另外,我們還要確認期權還未被取消,然后再退款。如果是期權到期后再贖回資金,那情況就會稍有不同。這種情況下,期權可能已經賣出去但沒有行使,資金仍應被退還給賣家。我們要確認合約已經到期并且還未被行使。然后也要將期權的取消標志設置為true,如果條件滿足則進行退款。

希望本文能幫助各位立刻在主網上開發Chainlink用例,并讓各位了解了Solidity獨特的功能。如果你想了解更多的Chainlink功能,請查看ChainlinkVRF,或查看Chainlink公允排序服務,了解Chainlink如何解決礦工搶跑問題。

如果你是一名開發者,并希望快速將智能合約連接至鏈下數據和系統,請查看?我們的開發者文檔并加入我們在Discord上的技術討論群。如果你希望透過電話具體討論集成細節,請點擊此處聯系我們。

Tags:LINKINKOPTQUOChainLinktronlink波寶錢包官網Optimus AIQuoll Finance

歐易okex官網
區塊鏈加速產業革命,打造畜禽養殖業發展新途徑-ODAILY_區塊鏈

人類從起初對野生動物開始馴化,到可供飼養的畜禽,延續到今天已有幾千年的歷史,從改革開放南方開始興起個體養殖業到在全國推廣也有40年的時間.

1900/1/1 0:00:00
行情分析:比特幣猶猶豫豫上行,其他加密資產顫顫巍巍-ODAILY_ING

BTC行情分析 4H走勢繼續縮量上行,有望沖擊前高,20000關口作為市場心理的一個重要關口,預期沒有破,走勢很難能夠發生確定的變化.

1900/1/1 0:00:00
OKEX揚帆再起航,統一賬戶重新定義交易-ODAILY_okex

資本市場從來不缺段子手,今年在A股中非常流行的一則關于白酒股的段子就極具趣味“年少不知白酒香,錯把科技加滿倉;年少不知白酒好,錯把醫藥當成寶;年少不知白酒醉.

1900/1/1 0:00:00
QKL123投研:比特幣處于收斂末端,主流輪動效應漸弱-ODAILY_300

行情概述: 比特幣于昨日凌晨再次創出新高,但沒有真正意義上突破前高;比特幣在23000平臺之上震蕩期間,主流相繼輪動,從XRP、LTC至BCH,資金輪動效應逐漸減弱,同時大盤走至收斂末端.

1900/1/1 0:00:00
超話社區064期|超新星來襲,Kira 為何與眾不同-ODAILY_GOD

新的代幣分發模型IVO怎么玩?獨創的MBPoS機制有何優勢?為多個知名項目提供流動性釋放方案的KiraNetwork來了!Blur借貸協議Blend新增支持NFT系列DeGods:5月9日消息.

1900/1/1 0:00:00
BEYOND-2020區塊鏈產業大會-ODAILY_ABEY

11月23日-24日,由獵云網、獵云財經主辦,VeryHash總冠名,火幣、礦工爸爸聯合主辦的“BEYOND-2020區塊鏈產業大會暨年度頒獎盛典”將在深圳灣萬麗酒店隆重召開.

1900/1/1 0:00:00
ads