亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于以太坊智能合約的去中心化匿名論壇系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

        2023-07-10 09:29:15曾一洪闕培斯高飛
        電腦知識與技術(shù) 2023年14期
        關(guān)鍵詞:智能合約去中心化

        曾一洪 闕培斯 高飛 

        關(guān)鍵詞:論壇系統(tǒng);去中心化;以太坊;智能合約

        中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A

        文章編號:1009-3044(2023)14-0012-03

        0 引言

        以太坊智能合約是一種運(yùn)行在以太坊區(qū)塊鏈上的程序,它可以定義和執(zhí)行合約的規(guī)則,可被區(qū)塊鏈上的交易所觸發(fā),在滿足觸發(fā)條件的情況下這段代碼可以從區(qū)塊鏈上讀取數(shù)據(jù)或者向區(qū)塊鏈上寫入數(shù)據(jù)[1],無須信任協(xié)議或中介機(jī)構(gòu)。以太坊智能合約的特點(diǎn)是透明、安全和不可篡改,因?yàn)樗鼈兊拇a和數(shù)據(jù)都存儲在去中心化的網(wǎng)絡(luò)上,由所有節(jié)點(diǎn)共同驗(yàn)證和執(zhí)行。區(qū)塊鏈匿名性是指區(qū)塊鏈上的交易參與者可以隱藏或保護(hù)他們的真實(shí)身份,只使用加密的地址或偽名進(jìn)行交易。匿名性是數(shù)字貨幣的重要屬性之一,旨在保護(hù)用戶的身份信息,隱藏用戶與交易地址之間的關(guān)聯(lián)關(guān)系,用戶在參與數(shù)字貨幣交易的過程中,無須暴露姓名、身份證號等真實(shí)的身份信息,而是將系統(tǒng)生成的假名地址作為交易時(shí)的身份標(biāo)識[2],防止被追蹤或?qū)彶?。用戶可以通過智能合約創(chuàng)建和管理自己的數(shù)字身份,選擇性地向第三方提供必要的信息,而不是全部暴露。以太坊智能合約和區(qū)塊鏈匿名性的結(jié)合為用戶提供了更多的自主權(quán)、隱私權(quán)和信任度,是區(qū)塊鏈技術(shù)發(fā)展的重要方向之一。

        隨著Web3.0時(shí)代的到來,去中心化應(yīng)用(DApp)開始受到越來越多的關(guān)注和嘗試。去中心化應(yīng)用是運(yùn)行在分布式網(wǎng)絡(luò)上,無須信任協(xié)議,參與者的信息被安全保護(hù)或匿名的應(yīng)用。它們與傳統(tǒng)的中心化應(yīng)用相比,有著更高的透明度、安全性和自主性。去中心化應(yīng)用的后端代碼(即智能合約)運(yùn)行在一個(gè)去中心化的網(wǎng)絡(luò)上,如以太坊,而非中心化的服務(wù)器。它們使用以太坊區(qū)塊鏈網(wǎng)絡(luò)作為數(shù)據(jù)存儲端,使用智能合約負(fù)責(zé)操作邏輯和數(shù)據(jù)存儲,并通過交易與DApp前端或多個(gè)智能合約進(jìn)行交互[3]。去中心化應(yīng)用的前沿領(lǐng)域包括去中心化金融(DeFi)、藝術(shù)品和收藏品、游戲、科技等。這些領(lǐng)域都有著巨大的創(chuàng)新潛力和社會價(jià)值,為用戶提供了更多的選擇。

        由于以太坊智能合約本質(zhì)上是一段程序,由一門針對區(qū)塊鏈運(yùn)行環(huán)境而設(shè)計(jì)的程序語言編寫,運(yùn)行在棧式的以太坊虛擬機(jī)中[4],所以智能合約同樣存在安全問題。為了提升系統(tǒng)的安全性,本文基于以太坊智能合約平臺,使用了Vyper進(jìn)行智能合約開發(fā),Vyper 是一種運(yùn)行在以太坊虛擬機(jī)上的智能合約編程語言,它的設(shè)計(jì)目標(biāo)是安全、簡單、易審計(jì),為了提高智能合約的安全性,它會故意禁止一些事情甚至使得某些需求變得更難實(shí)現(xiàn)。與主流的智能合約編程語言Solidi?ty相比,兩者有著如下區(qū)別(見表1)。

        本項(xiàng)目使用了Brownie智能合約開發(fā)框架對智能合約進(jìn)行開發(fā)和管理,Brownie是一種基于Python的以太坊智能合約開發(fā)框架,它提供了一系列的工具和庫,方便開發(fā)者編譯、部署、測試和調(diào)試智能合約;系統(tǒng)前端采用的是Vue框架,Vue通過MVVM模式將代碼拆分為視圖和數(shù)據(jù)兩部分,開發(fā)者只需要關(guān)注數(shù)據(jù)即可,視圖部分會根據(jù)數(shù)據(jù)的變化自動響應(yīng)更新[5];在Vue中引入了ethers.js庫以便前端能夠直接與以太坊上的智能合約進(jìn)行交互,同時(shí)也引入了axios庫來實(shí)現(xiàn)上傳圖片到IPFS分布式文件系統(tǒng);為了更加有效率地開發(fā)和測試論壇的各項(xiàng)功能,使用了Ganache以太坊開發(fā)環(huán)境作為論壇系統(tǒng)的開發(fā)和測試環(huán)境,模擬了真實(shí)的以太坊網(wǎng)絡(luò)行為和狀態(tài)。

        1 系統(tǒng)設(shè)計(jì)

        論壇是用于交流觀點(diǎn)、分享經(jīng)驗(yàn)、討論話題的網(wǎng)絡(luò)平臺,論壇核心的“三要素”是發(fā)送帖子、瀏覽帖子、回復(fù)帖子[6]。本論壇系統(tǒng)與傳統(tǒng)論壇系統(tǒng)的區(qū)別在于,它利用以太坊區(qū)塊鏈上的智能合約作為后端邏輯,以及使用IPFS分布式存儲,IPFS 可以使Web 內(nèi)容的分發(fā)方式發(fā)生改變,實(shí)現(xiàn)去中心化的特性[7];此外,本系統(tǒng)取消了傳統(tǒng)論壇的注冊和登錄功能,使得任何人都可以瀏覽帖子,只有在發(fā)帖和評論這類需要改變智能合約狀態(tài)的情況,屆時(shí)才會喚起MetaMask錢包支付gas費(fèi)。

        本系統(tǒng)主要由四個(gè)功能模塊組成,分別是帖子列表模塊、發(fā)布帖子模塊、帖子詳情模塊、帖子評論模塊。每個(gè)模塊會同時(shí)涉及智能合約部分和前端部分。

        1.1 帖子列表模塊

        本模塊負(fù)責(zé)在首頁展示已發(fā)布的帖子列表,并按照發(fā)布時(shí)間降序排列,即最新發(fā)布的帖子顯示在最前面。由于從鏈上的智能合約查詢帖子列表需要一定時(shí)間,所以在查詢過程中,首頁應(yīng)顯示“正在加載帖子”,如果查詢結(jié)果為空,即沒有任何帖子時(shí),首頁則應(yīng)顯示“目前暫無帖子”。如果帖子數(shù)量過多,超出一頁的顯示范圍,則會啟用分頁功能,方便用戶瀏覽不同頁碼的帖子。本模塊的程序流程圖如圖1所示。

        1.2 發(fā)布帖子模塊

        本模塊負(fù)責(zé)實(shí)現(xiàn)發(fā)布帖子,用戶可以在頁面填入帖子的標(biāo)題、內(nèi)容、圖片,點(diǎn)擊發(fā)布按鈕后,前端頁面會調(diào)用MetaMask錢包支付gas費(fèi),并將用戶剛發(fā)布的帖子信息寫入鏈上的智能合約,然后自動跳轉(zhuǎn)到首頁,用戶可以看到剛剛發(fā)布的帖子顯示在首頁。本模塊的時(shí)序圖如圖2所示。

        1.3 帖子詳情模塊

        本模塊負(fù)責(zé)帖子的詳情頁,用戶可以在該頁面查看帖子的詳細(xì)信息,包括標(biāo)題、內(nèi)容、圖片、評論。前端頁面通過獲取首頁路由傳遞的帖子ID,從鏈上的智能合約查詢該ID對應(yīng)的帖子信息,并展示在頁面上。

        1.4 帖子評論模塊

        本模塊負(fù)責(zé)實(shí)現(xiàn)評論功能,用戶可以在帖子詳情頁面的下方輸入評論內(nèi)容,并點(diǎn)擊發(fā)送按鈕提交評論。前端頁面會調(diào)用MetaMask錢包支付gas費(fèi),將評論內(nèi)容寫入鏈上的智能合約,并關(guān)聯(lián)到相應(yīng)的帖子。然后頁面會自動刷新,顯示最新的評論列表。

        2 系統(tǒng)實(shí)現(xiàn)

        2.1 智能合約

        本系統(tǒng)使用Vyper語言編寫智能合約,首先定義了一個(gè)名為post_struct的結(jié)構(gòu)體,用于表示一個(gè)帖子的信息,包括帖子標(biāo)題、帖子內(nèi)容、帖子位置(帖子ID)、帖子發(fā)布時(shí)間、圖片哈希值(圖片CID)、評論數(shù)組和評論位置,post_struct中的變量見表2。

        合約中還設(shè)計(jì)了一個(gè)名為post_title_struct的結(jié)構(gòu)體,表示一個(gè)帖子的標(biāo)題信息,包括帖子標(biāo)題、帖子位置和帖子發(fā)布時(shí)間,便于在查詢帖子標(biāo)題列表時(shí),返回以該結(jié)構(gòu)體為元素的數(shù)組。合約中設(shè)計(jì)了兩個(gè)變量,分別是posts和post_sign,posts是一個(gè)長度為100 的post_struct數(shù)組,表示所有的帖子。post_sign是一個(gè)uint8類型的變量,用于記錄帖子存放的位置。合約中設(shè)計(jì)了四個(gè)函數(shù),分別為publish_post、pub?lish_comment、get_posts_titles、get_post_object。pub?lish_post函數(shù)是發(fā)布帖子時(shí)需要調(diào)用的函數(shù),接收的參數(shù)為帖子的標(biāo)題、內(nèi)容、發(fā)布時(shí)間戳和圖片哈希值,該函數(shù)將這些信息存儲在posts 數(shù)組中,并更新post_sign,如果posts數(shù)組已滿,則覆蓋最舊的帖子,并將post_sign設(shè)置為0。publish_comment函數(shù)是發(fā)布評論時(shí)需要調(diào)用的函數(shù),接收的參數(shù)為評論內(nèi)容和對應(yīng)的帖子位置,該函數(shù)將評論內(nèi)容追加到posts數(shù)組里對應(yīng)帖子的評論數(shù)組中,并更新評論位置。如果評論數(shù)組已滿,則拋出異常。get_posts_titles函數(shù)是查詢合約中所有帖子的標(biāo)題時(shí)需要調(diào)用的函數(shù),它會返回一個(gè)長度為100的post_title_struct數(shù)組,表示所有帖子的標(biāo)題信息。get_post_object函數(shù)是查詢指定帖子的詳情信息,接收的參數(shù)為帖子位置,返回該位置所對應(yīng)的帖子的標(biāo)題、內(nèi)容、圖片哈希值以及該帖子下的評論。

        2.2 前端頁面

        前端使用的是Vue框架,主要使用的Node.js依賴包見表3。

        Vue使用的是組件化的開發(fā),本系統(tǒng)主要包含5 個(gè)組件,分別為App.vue、Header.vue、HomeView.vue、PublishView.vue、PostView.vue。

        1)App.vue:根組件,負(fù)責(zé)加載整個(gè)應(yīng)用的頁面。里面僅包含兩個(gè)子組件,一個(gè)是Header組件,另一個(gè)是RouterView組件。Header組件即為頁頭。Router?View組件是路由庫提供的路由組件,用于根據(jù)不同的URL顯示不同的子組件,如HomeView組件、Publish?View組件和PostView組件。

        2)Header.vue:頁頭組件,組件包含兩個(gè)按鈕,分別為首頁和發(fā)帖。點(diǎn)擊首頁按鈕會跳轉(zhuǎn)路由到Hom?eView組件,顯示帖子列表。點(diǎn)擊發(fā)帖按鈕會跳轉(zhuǎn)路由到PublishView組件,進(jìn)入發(fā)布帖子的頁面。

        3)HomeView.vue:首頁組件,用于展示帖子標(biāo)題列表。組件掛載完畢后,前端頁面會調(diào)用ethers.js庫來查詢智能合約上的帖子列表數(shù)據(jù),并將查到的帖子列表按照時(shí)間倒序展示到頁面。如果帖子數(shù)量超過十個(gè),超出一頁的顯示范圍,則會啟用分頁功能。用戶可以點(diǎn)擊帖子標(biāo)題跳轉(zhuǎn)到PostView組件,查看帖子詳情,該組件實(shí)現(xiàn)的頁面效果如圖3所示。

        4)PublishView.vue:發(fā)布帖子組件,在頁頭點(diǎn)擊發(fā)帖即可跳轉(zhuǎn)到該組件,在該組件渲染的頁面中,可以填寫帖子標(biāo)題、帖子內(nèi)容以及上傳圖片進(jìn)行發(fā)帖。上傳的圖片會通過axios 庫上傳到IPFS 分布式文件系統(tǒng),并返回一個(gè)唯一的IPFS哈希值作為圖片的標(biāo)識符。帖子發(fā)布成功后,會跳轉(zhuǎn)到HomeView組件,將剛發(fā)布的帖子標(biāo)題展示到首頁的最上方。該組件實(shí)現(xiàn)的頁面效果如圖4所示。

        5)PostView.vue帖子詳情組件,在該組件渲染的頁面中,會顯示當(dāng)前帖子的標(biāo)題、內(nèi)容、圖片以及評論列表。用戶還可以在評論框中輸入自己的評論,并點(diǎn)擊發(fā)送按鈕來發(fā)表評論。該組件實(shí)現(xiàn)的頁面效果如圖5 所示。

        3 結(jié)束語

        本文完成了一個(gè)基于以太坊智能合約的去中心化匿名論壇系統(tǒng)①,旨在為用戶提供一個(gè)自由、安全、隱私的在線交流平臺。用戶無須注冊賬號,即可在論壇上發(fā)布和瀏覽帖子,且不會暴露身份信息。用戶的每一次發(fā)帖或評論都會通過智能合約記錄在區(qū)塊鏈上,保證了數(shù)據(jù)的不可篡改和透明性。前端頁面及帖子圖片都存儲在IPFS分布式文件系統(tǒng)上,保證了數(shù)據(jù)的持久性和可訪問性。本系統(tǒng)展示了區(qū)塊鏈技術(shù)和分布式存儲技術(shù)在社交領(lǐng)域的應(yīng)用價(jià)值,為未來去中心化社交網(wǎng)絡(luò)提供了參考和啟示。

        猜你喜歡
        智能合約去中心化
        農(nóng)產(chǎn)品供應(yīng)鏈金融信用體系框架設(shè)計(jì)
        基于區(qū)塊鏈技術(shù)的去中心化數(shù)字出版平臺研究
        區(qū)塊鏈技術(shù)在互聯(lián)網(wǎng)保險(xiǎn)行業(yè)的應(yīng)用探討
        一種去中心化的網(wǎng)絡(luò)域名服務(wù)系統(tǒng)模型
        淺析移動互聯(lián)語境下中小成本電影去中心化的創(chuàng)作趨向
        戲劇之家(2016年20期)2016-11-09 22:34:07
        區(qū)塊鏈技術(shù)在會計(jì)中的應(yīng)用展望
        “去中心化”電子商務(wù)背景下大學(xué)生網(wǎng)絡(luò)創(chuàng)業(yè)前景分析
        淺析新媒體視閾下的新聞失實(shí)報(bào)道
        商(2016年19期)2016-06-27 08:56:46
        智能合約與金融合約
        商(2016年6期)2016-04-20 17:50:36
        “去中心化”時(shí)代的中心化現(xiàn)象
        中外管理(2015年8期)2015-09-16 19:30:34
        亚洲免费一区二区三区视频| 妺妺窝人体色www聚色窝仙踪| 日本公与熄乱理在线播放| 亚洲精品456| 国产人妖在线免费观看| 婷婷色精品一区二区激情| 好吊妞无缓冲视频观看| 亚洲精品夜夜夜| 免费人成视频网站在线观看不卡| 亚洲精品第四页中文字幕| 色欲人妻综合aaaaa网| 国产成人精品午夜福利| 国产精品亚洲美女av网站| 成人国产精品三上悠亚久久| 婷婷五月婷婷五月| 欧美日本亚洲国产一区二区| 亚洲av成人一区二区三区不卡| 国产一区二区三区不卡在线观看| 国产真实乱对白精彩久久老熟妇女| 久久国产自偷自免费一区100| 人妻熟女中文字幕在线视频| 国产内射视频在线免费观看| 成人综合婷婷国产精品久久蜜臀| 色窝窝无码一区二区三区2022| 日本一区不卡在线观看| 中国女人内谢69xxxxxa片 | 亚洲成在人线av| 亚洲国产日韩av一区二区| 中文字幕日韩有码在线| 小宝极品内射国产在线| 老汉tv永久视频福利在线观看| 亚洲桃色蜜桃av影院| 国产精品毛片无遮挡| 国产精品嫩草影院AV| 久久九九av久精品日产一区免费 | 精品无码久久久久久久久水蜜桃| 丰满熟妇乱又伦| 国产亚洲欧美另类第一页| 日本视频一区二区三区在线观看| 无码任你躁久久久久久久| 免费一本色道久久一区|