互聯網發展的三個階段
web1.0
靜態頁面,內容只能供用戶去閱讀,類似于在網絡上讀報紙或者看書。
web2.0
動態互聯網,實現用戶之間的互動,比如twitter,facebook,titok等。
web2.0中廠商用免費或極低的成本吸引用戶,通過獲取到用戶的信息來推流廣告從而獲得利潤。
打個比方就是廠商在一片地上種了很多草,吸引羊來吃,趁著羊吃草的功夫把羊身上的毛薅下來拿去賣錢,而羊自己并不在意這些毛,可以說是一種雙向互利的方式。
web3.0
web3.0是一個很模糊的概念,隨著區塊鏈技術的發展,基于區塊鏈的web3.0誕生。
接著用上面的例子來說,隨著web2.0的發展壯大,稀缺的不再是草,而是羊毛,也就是用戶身上的數據。那么羊毛的重要性愈加突出,所以提出web3.0的概念,也就是擁有自己的一片空間,別人無論如何都無法修改,也就是將羊毛存放在了一個非常安全的地方中,相比于web2.0,不但實現了動態的交互,也實現了數據的“擁有”。
web3的概念非常模糊,可以說是一個大方向,按照我個人的理解可以說是在互聯網創造了一個虛擬的世界,這個虛擬的世界擁有和現實世界一樣的貨幣交易系統以及其他體系,能夠自主維持運轉的這樣一個“虛擬生態系統”,而這個生態系統的生存法則就是“去中心化”。
什么是去中心化?
比如現在市面上的app都由一個廠家負責,廠商可以隨意刪除控制用戶數據,形成了以廠商為中心的服務體系,去中心化就是沒有中心廠商作為核心,而是所有用戶形成一個能夠自力更生的體系。
密碼貨幣
隨著web2.0發展,數字貨幣使用越來越多,而在區塊鏈技術的支持下,數字貨幣也出現了全新的存在形式,去中心化的密碼貨幣,世界上第一種密碼貨幣就是比特幣。像紙幣有防偽印一樣,密碼貨幣通過密碼學的散列計算出的hash值并且和智能合約進行綁定,密碼貨幣基于去中心化的機制,與依賴中心監管體系的銀行金融系統相對。之后出現的數種密碼貨幣被創造,它們通常被稱為altcoins。
區塊鏈
區塊鏈的防篡改機制一個區塊中儲存了三樣東西:數據,前一個區塊的hash值,自身的hash值,如果要更改某一區塊的內容,那么該區塊的hash值就會改變,下一區塊儲存的a區塊的hash值無法對應a區塊當前哈希值,那么這兩個區塊間的鏈接就會斷開。
如果想要篡改某一區塊的數據,我們就要將這一區塊以及后續所有區塊的hash值進行重算,比如一條區塊鏈里面有abcde五個區塊,當我們篡改了b區塊的數據,那么我們就要帶著b區塊的新hash值和c區塊的數據重新計算出c區塊的新hash值,然后再帶著c區塊的新hash值和d區塊的數據重新計算d區塊的新hash值,再帶著d區塊的新hash值和e區塊的數據重新計算e區塊的hash值…………………..其實在重新計算某一區塊的hash值的過程也就相當于創造了一個新的區塊,因此篡改一個區塊以及后續區塊所需的時間取決于創造一個區塊所需要的時間。
這個看起來對算力要求似乎非常龐大,但是現代計算機其實是可以做到這一點的,如果我們有一臺超大算力的計算機,那么是不是輕松就可以改變區塊鏈的內容了?為了防止這種情況的出現,區塊鏈加入了工作量證明機制簡稱pow
我們用游戲舉例說明一下pow,我們剛才說到用超大算力計算機來篡改區塊鏈,這就好比你拿著滿級神裝在新手村亂殺,區塊鏈是不允許這種情況出現的,因此它會上調怪物屬性,也就是會增加創造一個區塊所需的難度,使每一新區塊被創造時都保持在十分鐘左右,因此即使是一臺超高算力的計算機想要篡改一個區塊所需的時間仍然是
聲音 | 拉卡拉:公司設立區塊鏈實驗室,加強探索區塊鏈應用:據新浪財經消息,拉卡拉(300773.SZ)在互動平臺上回復投資者提問時表示,公司高度關注區塊鏈技術及其應用,并設立區塊鏈實驗室,加強探索區塊鏈核心技術在監管科技、聯合風控、基于隱私計算的信息安全、反欺詐、下一代結算系統和商品溯源等方面的應用與服務。[2020/2/18]
創造一個區塊的時間??nmin。
那我們所說的挖礦是什么呢?上面提到的情況是想要篡改區塊中的數據,那么我沒有惡意,我只是單純的創造區塊去給自己或者他人使用,這個創造區塊的過程犧牲了我電腦的算力和一些其他資源,所以作為補償,創建區塊的人會得到密碼貨幣的獎勵,這就是我們所說的挖礦。
區塊鏈的點對點網絡結構
在傳統的web服務中,傳統的鏈接對象基本都是客戶端和服務端,眾多客戶端訪問一個服務端來進行交互,而在區塊鏈的點對點網絡結構中,不再有客戶端與服務端的概念,每一個節點間相互平等,并且包含完整的區塊鏈數據存儲,也就是說每一個節點中都儲存了整個區塊鏈網絡中的所有信息,這樣即使一個節點出現故障,其他所有節點也在幫他記錄信息,這些記錄了所有節點區塊鏈的節點叫做全節點,當然也有只儲存了自己信息的輕節點,比如區塊鏈用來儲存轉賬記錄,那么每一節點都儲存了所有節點之間的轉賬記錄,每一節點儲存的內容也是相同的,如果某一節點與其他節點出現差異,那么該節點或許就有被篡改過的可能了,但是被篡改幾乎是不可能發生的,原因看下面。
點對點網絡結構下的所有節點擁有判斷區塊是否被篡改的能力,當一個新區塊想要加入某一節點的區塊鏈時,該節點會向其他所有節點進行廣播,所有的節點進行判斷,如果50%以上的節點都認為該區塊沒有被篡改,那么這個區塊就可以成功的加入區塊鏈當中,反言之如果想要篡改某一區塊的數據,你首先要將這一區塊后的所有哈希重新計算,并且還要更改超過百分之五十節點的這一區塊后的所有區塊的哈希,那么就要擁有超過全網50%以上的算力才可以,這付出的代價是相當高的,這就是區塊鏈網絡系統的少數服從多數原則。
DAPP
Dapp是什么?
APP(Application)指的是手機里的應用程序,像是微信、微博、抖音…等都是日常生活中常會使用到的App。
而Dapp的全名為去中心化應用程序,是建立在區塊鏈系統網絡上,所提供的服務都具有公開透明、不可篡改的特性。
①網安學習成長路徑思維導圖②60+網安經典常用工具包③100+SRC漏洞分析報告④150+網安攻防實戰技術電子書⑤最權威CISSP認證考試指南+題庫⑥超1800頁CTF實戰技巧手冊⑦最新網安大廠面試題合集⑧APP客戶端安全檢測指南
以下是Dapp所具有的要素:
代碼開源:程序代碼皆公開透明,任何人都可以查閱及審核,避免項目方說到沒做到。
分布式帳本:降低數據遺失的風險,且沒有任何其他第三方有權能夠竄改數據。
數據所有權:除本人外,任何人皆無法動用該帳號的數據。
為什么Dapp會崛起?
事實上,App都是中心化的應用服務,用戶所使用的數據都會存儲在單一服務器系統里,代表公司能掌控用戶的所有數據,但相關問題也隨之浮出水面。
數據所有權歸屬問題
用戶在App上的個人資料、搜索瀏覽紀錄等信息都會存儲在中心化系統的服務器里,這也意味著軟件公司能夠借由這些數據來營利。
也導致像是微博、抖音等企業,能透過搜集的用戶數據來投放廣告,并借此獲利。等于企業能用你的信息來賺錢,但你卻分不到任何好處,甚至還可能受到影響。
聲音 | 孟巖:區塊鏈適用3個典型條件:12月14日,在IN-CHAIN 2019全球區塊鏈峰會上,數字資產研究院副院長孟巖談及「區塊鏈適用的典型條件」時表示:“1.各個互相沒有隸屬關系實體之間的相互協作;2.各方均不愿讓渡數據主權或數據治權,亦不愿意無條件共享數據;3.由信息不透明導致的過渡博弈嚴重降低協作效率。”[2019/12/14]
另外,傳統手游的游戲道具、帳號數據也都屬于公司所有,一旦宣布停止營運,這些資產也會隨著官方服務器關閉而消失。
但在Dapp中,你的游戲道具、帳號都會以NFT形式儲存在鏈上,因此只要區塊鏈不倒,你就能持續擁有這些資產。換句話說,Dapp能夠讓數據的所有權回歸到用戶身上。額外提醒,雖然你仍擁有這些資產,但可能會因為游戲已經關閉,導致這些資產的現值趨近于零,你能保有的仍以回憶居多。
過度中心化
App是由中心化服務器來進行管理,因此企業有時可以專斷獨行,但用戶卻沒有任何反制的手段:例如可以隨意植入廣告,或是刪除用戶的內容、帳號。
而Dapp的數據都存在區塊鏈上,因此項目方沒辦法任意刪除用戶資料,目前也沒有任何廣告植入的問題。
由于上述幾點原因,也讓許多人開始對傳統的App感到不滿,于是就有人打算通過區塊鏈“去中心化”的特性來研發能解決上述問題的App,于是Dapp就此誕生。
不過同時也要注意,不是每個Dapp都一定符合公開、去中心化的規范,例如Opensea就能下架用戶的NFT和限制用戶登陸。
Dapp與App的差異
App的應用服務是使用中心化服務器,代表軟件公司必須要承擔存儲用戶的數據量的營運成本,否則將無法持續地運行。
例如抖音服務器的成本就百萬以上,因此必須想辦法創造各種營收管道來支持各項支出,像是通過大數據將廣告推廣到潛在用戶面前,借此吸引更多廣告商進駐。
而Dapp是建立在區塊鏈上,用戶在鏈上進行交易、換幣等行為時,是需要自行負擔手續費的,也就代表開發商的運營成本會比傳統App來得更低。
智能合約
智能合約,是一段寫在區塊鏈上的代碼,一旦某個事件觸發合約中的條款,代碼即自動執行。也就是說,滿足條件就執行,不需要人為操控,類似于傳統web的后端代碼。
簡單區塊鏈實現
我們用Javascript來手寫一個建議的區塊鏈出來,其實和寫一個鏈表很像:
constsha256=require('crypto-js/sha256')Date=newDate()classblock{constructor(data,time,previousHash){this.data=datathis.time=timethis.previousHash=previousHashthis.myHash=this.currHash(。currHash(){returnsha256(this.data+this.time+this.previousHash).toString(。classblockCahin{constructor(){this.chain=;}createBlockchain(){returnnewblock("Genesisblock",Date.toLocaleString(),0o0000000。getLatestblock(){returnthis.chain}addBlock(newBlock){newBlock.previousHash=this.getLatestblock().myHashnewBlock.myHash=newBlock.currHash()this.chain.push(newBlock。BlockChain=newblockCahin()BlockChain.addBlock(newblock("thisisatest",Date.toLocaleDateString(),"anything"))console.log(BlockChain)
動態 | 臺灣司法證據保全引進區塊鏈技術:據Ithome消息,臺灣“法務部調查局資通安全處”處長吳富梅表示,該局在歷經多時研究后,正式推出鑒識報告上鏈的新服務,預計將紙本鑒識報告電子檔的雜湊值(Hash Value),透過硬體錢包加密簽章后,透過硬體錢包加密簽章后,上傳到以太坊的節點,預計到了年底時,將會推出云端取證資料上鏈的服務。[2019/5/22]
接下來我們用代碼實現一下簡易的POW:
constsha256=require("crypto-js/sha256")functionproofOfwork(){letseed="y1zh3e7"letx=1//x為自增變量while(true){if(sha256(seed+x).toString().substring(0,4)!="0000")//定義難度,比如我現在要求通過不斷自增x去計算seed+x的哈希值{//當哈希值前四位都為0000時則代表成功如果想提高難度我們就可以讓前x位為xxxxx+=1}else{console.log(sha256(seed+x).toString())break}}console.log(x)//輸出計算多少次后成功}proofOfwork()
實現防篡改機制:
/***********************************************驗證區塊鏈防篡改需要檢測兩項:1.重新計算區塊的hash值,判斷與區塊中儲存的hash是否相同2.判斷當前區塊的previousHash是否和上一區塊的hash相同***********************************************/functionvalidateBlock(validBlockchain){if(validBlockchain.chain.length==1){if(validBlockchain.chain.myHash!=validBlockchain.calcHash()){console.log("數據篡改")returnfalse}}else{for(leti=1;i<=validBlockchain.chain.length-1;i++){if(validBlockchain.chain.myHash!=validBlockchain.chain.calcHash()){console.log("數據篡改")returnfalse}if(validBlockchain.chain.previousHash!=validBlockchain.chain.myHash){console.log("前后區塊鏈斷裂")returnfalse}}}console.log("數據無篡改且區塊鏈結構完整")returntrue}
將完整的POW整合到區塊鏈當中并實現挖礦功能,最終實現的完整區塊鏈:
constsha256=require('crypto-js/sha256')Date=newDate()classblock{constructor(data,time,previousHash){this.data=datathis.time=timethis.nonce=1this.previousHash=previousHashthis.myHash=this.calcHash(。calcHash(){returnsha256(this.data+this.time+this.previousHash+this.nonce).toString(。/****/getAnswer(difficulty){letanswer=""for(leti=0;i<difficulty;i++){answer+="0"}console.log(answer)returnanswer}/**引入挖礦功能**/mine(difficulty){letanswer=this.getAnswer(difficulty)letHash=this.calcHash()while(true){if(Hash.substring(0,difficulty)!=answer){this.nonce++Hash=this.calcHash(。else{break}}console.log("minesuccessful!")console.log(this.nonce)returnHash}}classblockCahin{constructor(){this.chain=this.difficulty=5}createBlockchain(){returnnewblock("Genesisblock",Date.toLocaleString(),0o0000000。getLatestblock(){returnthis.chain}addBlock(newBlock){newBlock.previousHash=this.getLatestblock().myHashnewBlock.myHash=newBlock.mine(this.difficulty)this.chain.push(newBlock。/***********************************************驗證區塊鏈防篡改需要檢測兩項:1.重新計算區塊的hash值,判斷與區塊中儲存的hash是否相同2.判斷當前區塊的previousHash是否和上一區塊的hash相同***********************************************/functionvalidateBlock(validBlockchain){if(validBlockchain.chain.length==1){if(validBlockchain.chain.myHash!=validBlockchain.calcHash()){console.log("數據篡改")returnfalse}}else{for(leti=1;i<=validBlockchain.chain.length-1;i++){if(validBlockchain.chain.myHash!=validBlockchain.chain.calcHash()){console.log("數據篡改")returnfalse}if(validBlockchain.chain.previousHash!=validBlockchain.chain.myHash){console.log("前后區塊鏈斷裂")returnfalse}}}console.log("數據無篡改且區塊鏈結構完整")returntrue}BlockChain=newblockCahin()BlockChain.addBlock(newblock("thisisatest",Date.toLocaleDateString(),"anything"))//console.log(BlockChain)//BlockChain.chain.data="數據篡改"//BlockChain.chain.myHash="0012343566688"//console.log(validateBlock(BlockChain))
聲音 | 政協委員:充分利用區塊鏈等技術手段加強對侵權行為的識別:據新華網消息, 十三屆全國政協第十九次雙周協商座談會28日在京召開。此次會議圍繞“網絡環境下的知識產權保護”建言資政。一些委員建議,要充分利用區塊鏈、大數據、云計算、人工智能等現代信息技術手段,加強對侵權行為的在線識別、實時監測、源頭追溯以及證據采集固定等,注意將業界成功技術和規則上升為行業標準。[2019/1/28]
數字貨幣的簡單實現
比特幣
我們前面說到區塊鏈是用來記錄信息的,如果它記錄的是轉賬記錄那么它就成了一個賬本。
一筆轉賬信息需要以下四個信息:
付款人收款人轉賬金額轉賬時間
我們前面提到了POW,比特幣會通過POW將產生一個區塊的時間控制在十分鐘左右,比特幣的工作機制基本如下:
整個區塊鏈是一個網狀的網絡結構,其中有一個中心,每十分鐘發布一個問題,當問題發布后,該網狀網絡中的所有結點會來解這個問題,此時就是各結點間的算力比拼,當有一個結點解出該問題后則代表挖礦成功,一個新區塊被創造出來,這時該新區塊內會自動生成一筆轉賬記錄,其中的收款人就是該區塊的挖出者,這時區塊鏈就會自動把獎勵發放到收款人的賬戶上,并且該區塊會在整個區塊鏈網絡中進行廣播,區塊鏈中的每一個結點會對該區塊進行驗證其合法性,經過驗證后該新區塊就會被加到區塊鏈上。每四年比特幣的獎勵會減半一次,最后的比特幣總量大約是在2100萬個左右。
那么這里會有一個問題,如果過了幾年之后,比特幣越來越少,每次挖礦后幾乎得不到比特幣了,那還會有人來挖礦嗎?
其實比特幣只是比特幣區塊鏈中的一個額外獎勵機制,整個區塊鏈貨幣依賴的是每一筆轉賬記錄的手續費,當一個新區塊被挖出時那么這個新區塊的轉賬信息就會記錄在這個新區塊上,后續也會記錄其他的轉賬信息,并且會產生手續費,手續費歸記錄該筆轉賬信息的區塊的挖出者所有。
說到動態調整難度,比特幣是怎么調整的呢?
比特幣會在每2016個區塊誕生后驗證一下難度,如果說本來預期中mine這2016個區塊所需要的時間是兩個星期,而實際只用了一個星期,那么此時比特幣區塊鏈就會調整難度,使其達到預期,基本上比特幣區塊鏈會每兩個星期調整一次難度。
創建自己的數字貨幣
首先我們要新建一個Transaction類來進行轉賬記錄:
classTransaction{constructor(from,to,amount){this.from=fromthis.to=tothis.amount=amount}}
更改區塊中data的含義,此時要記錄的是轉賬信息transaction,并且由于transaction是一個對象,因此在參與計算哈希時要轉為字符串:
classBlock{constructor(transaction,previousHash){this.transactions=transactionthis.time=Date.now()this.nonce=1this.previousHash=previousHashthis.myHash=this.calcHash(。//計算hash時要將data轉換為字符串類型,此時的data是一個transactioncalcHash(){returnsha256(JSON.stringify(this.transactions)+this.time+this.previousHash+this.nonce).toString(。
上面說到獎勵貨幣的發放是通過轉賬的方式實現的,所以我們在鏈上實現邏輯:
動態 | Ripple與IMF討論區塊鏈和數字資產發展:據coincryptorama消息,今日國際貨幣基金組織(IMF)官員Ross Leckow與Ripple的聯合創始人Brad Garlinghouse進行了對話。他們討論了金融科技行業以及區塊鏈在其中的作用。考慮到金融和銀行業不斷變化的性質,IMF希望在國際收支管理問題上提供建議,并解決各種財務困難。[2018/11/14]
classblockChain{constructor(){this.chain=this.difficulty=5this.transactionPool=//挖礦成功的轉賬信息this.mineReward=50//每次挖礦成功的獎勵貨幣數}mineTransaction(minerAddress){constminerRewardTransaction=newTransaction('',minerAddress,this.mineReward)this.transactionPool.push(minerRewardTransaction。
之前我們是在外部傳入一個區塊,在整個貨幣系統的實現后區塊應該是在挖礦時在區塊鏈內部產生的,修改代碼:
//將Transaction添加到TransactionPool中addTransaction(Transaction){this.transactionPool.push(Transaction。mineTransaction(minerAddress){constminerRewardTransaction=newTransaction('',minerAddress,this.mineReward)this.transactionPool.push(minerRewardTransaction)//挖礦/*********************************************************這里新區塊記錄了整個區塊鏈的轉賬信息,但在實際情況中區塊的存儲*容量是有限制的,所以在挖礦時記錄的轉賬記錄會選擇手續費最高的transaction*我們這里先不考慮這種情況*******************************************************/constnewBlock=newBlock(this.transactionPool,this.getLatestBlock().myHash)newBlock.mine()//添加到區塊鏈,并清空TransactionPoolthis.chain.push(newBlock)this.transactionPool=}
整個寫好的數字代幣:
constsha256=require('crypto-js/sha256')classTransaction{constructor(from,to,amount){this.from=fromthis.to=tothis.amount=amount}}classBlock{constructor(transaction,previousHash){this.transactions=transactionthis.time=Date.now()this.nonce=1this.previousHash=previousHashthis.myHash=this.calcHash(。//計算hash時要將data轉換為字符串類型,此時的data是一個transactioncalcHash(){returnsha256(JSON.stringify(this.transactions)+this.time+this.previousHash+this.nonce).toString(。/**獲取相應難度hash**/getAnswer(difficulty){letanswer=""for(leti=0;i<difficulty;i++){answer+="0"}returnanswer}/**引入挖礦功能**/mine(difficulty){letanswer=this.getAnswer(difficulty)letHash=this.calcHash()while(true){if(Hash.substring(0,difficulty)!=answer){this.nonce++Hash=this.calcHash(。else{break}}console.log("minesuccessful!\n")console.log("計算"+this.nonce+"次后挖礦成功,answer為"+Hash)returnHash}}classblockChain{constructor(){this.chain=this.difficulty=4this.transactionPool=//挖礦成功的轉賬信息this.mineReward=50//每次挖礦成功的獎勵貨幣數}createBlockchain(){returnnewBlock("Genesisblock",null。getLatestBlock(){returnthis.chain}//將Transaction添加到TransactionPool中addTransaction(Transaction){this.transactionPool.push(Transaction。mineTransaction(minerAddress){constminerRewardTransaction=newTransaction('',minerAddress,this.mineReward)this.transactionPool.push(minerRewardTransaction)//挖礦/*********************************************************這里新區塊記錄了整個區塊鏈的轉賬信息,但在實際情況中區塊的存儲*容量是有限制的,所以在挖礦時記錄的轉賬記錄會選擇手續費最高的transaction*我們這里先不考慮這種情況*******************************************************/constnewBlock=newBlock(this.transactionPool,this.getLatestBlock().myHash)newBlock.mine(this.difficulty)//添加到區塊鏈,并清空TransactionPoolthis.chain.push(newBlock)this.transactionPool=}}/***********************************************驗證區塊鏈防篡改需要檢測兩項:1.重新計算區塊的hash值,判斷與區塊中儲存的hash是否相同2.判斷當前區塊的previousHash是否和上一區塊的hash相同***********************************************/functionvalidateBlock(validBlockchain){if(validBlockchain.chain.length==1){if(validBlockchain.chain.myHash!=validBlockchain.calcHash()){console.log("數據篡改")returnfalse}}else{for(leti=1;i<=validBlockchain.chain.length-1;i++){if(validBlockchain.chain.myHash!=validBlockchain.chain.calcHash()){console.log("數據篡改")returnfalse}if(validBlockchain.chain.previousHash!=validBlockchain.chain.myHash){console.log("前后區塊鏈斷裂")returnfalse}}}console.log("數據無篡改且區塊鏈結構完整")returntrue}Y1Coin=newblockChain()constTransaction1=newTransaction('add1','add2',20)constTransaction2=newTransaction('add1','add2',5)Y1Coin.addTransaction(Transaction1)Y1Coin.addTransaction(Transaction2)Y1Coin.mineTransaction("add3")console.log(Y1Coin)console.log(Y1Coin.chain.transactions)
Tags:區塊鏈Blockchain比特幣區塊鏈工程專業學什么區塊鏈存證怎么弄區塊鏈技術發展現狀和趨勢blockchaintechnologyblockchain錢包是哪個國家的blockchain
圖源:Kerry《未來營養趨勢白皮書》目前全球營養健康消費品市場規模超12000億人民幣,其中亞洲市場規模超5000億人民幣,中國市場約占亞洲的50%,且增速最快.
1900/1/1 0:00:00幣圈“羅賓漢”AlexMashinsky以銀行的商業模式編了一套“反銀行”的故事,卷走了50萬用戶42億美元.
1900/1/1 0:00:00現在,請你掏出一張人民幣,找一找盲文在哪里。我拿如今通行的第五版的100元人民幣舉例,在100元人民幣上,你可以在編號下方的位置找到盲文.
1900/1/1 0:00:0036氪獲悉,近日,“聚合新能源”完成千萬元A輪融資,投資方包括蘇州資管姑蘇人才基金二期、相城金控以及中航聯創創投旗下基金.
1900/1/1 0:00:00據中國人民銀行11月2日消息,中國人民銀行行長易綱11月2日在香港金融管理局“國際金融領袖投資峰會”上表示,中國經濟的潛在增長率將保持在合理區間.
1900/1/1 0:00:00領取數字人民幣消費券/紅包在線上線下“買買買”、用數字人民幣給親朋好發紅包……兔年春節期間,數字人民幣成為消費新風尚以及促進消費回暖復蘇的一股新力量.
1900/1/1 0:00:00