999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于以太坊智能合約的去中心化匿名論壇系統的設計與實現

2023-07-10 09:29:15曾一洪闕培斯高飛
電腦知識與技術 2023年14期

曾一洪 闕培斯 高飛 

關鍵詞:論壇系統;去中心化;以太坊;智能合約

中圖分類號:TP311 文獻標識碼:A

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

0 引言

以太坊智能合約是一種運行在以太坊區塊鏈上的程序,它可以定義和執行合約的規則,可被區塊鏈上的交易所觸發,在滿足觸發條件的情況下這段代碼可以從區塊鏈上讀取數據或者向區塊鏈上寫入數據[1],無須信任協議或中介機構。以太坊智能合約的特點是透明、安全和不可篡改,因為它們的代碼和數據都存儲在去中心化的網絡上,由所有節點共同驗證和執行。區塊鏈匿名性是指區塊鏈上的交易參與者可以隱藏或保護他們的真實身份,只使用加密的地址或偽名進行交易。匿名性是數字貨幣的重要屬性之一,旨在保護用戶的身份信息,隱藏用戶與交易地址之間的關聯關系,用戶在參與數字貨幣交易的過程中,無須暴露姓名、身份證號等真實的身份信息,而是將系統生成的假名地址作為交易時的身份標識[2],防止被追蹤或審查。用戶可以通過智能合約創建和管理自己的數字身份,選擇性地向第三方提供必要的信息,而不是全部暴露。以太坊智能合約和區塊鏈匿名性的結合為用戶提供了更多的自主權、隱私權和信任度,是區塊鏈技術發展的重要方向之一。

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

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

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

1 系統設計

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

本系統主要由四個功能模塊組成,分別是帖子列表模塊、發布帖子模塊、帖子詳情模塊、帖子評論模塊。每個模塊會同時涉及智能合約部分和前端部分。

1.1 帖子列表模塊

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

1.2 發布帖子模塊

本模塊負責實現發布帖子,用戶可以在頁面填入帖子的標題、內容、圖片,點擊發布按鈕后,前端頁面會調用MetaMask錢包支付gas費,并將用戶剛發布的帖子信息寫入鏈上的智能合約,然后自動跳轉到首頁,用戶可以看到剛剛發布的帖子顯示在首頁。本模塊的時序圖如圖2所示。

1.3 帖子詳情模塊

本模塊負責帖子的詳情頁,用戶可以在該頁面查看帖子的詳細信息,包括標題、內容、圖片、評論。前端頁面通過獲取首頁路由傳遞的帖子ID,從鏈上的智能合約查詢該ID對應的帖子信息,并展示在頁面上。

1.4 帖子評論模塊

本模塊負責實現評論功能,用戶可以在帖子詳情頁面的下方輸入評論內容,并點擊發送按鈕提交評論。前端頁面會調用MetaMask錢包支付gas費,將評論內容寫入鏈上的智能合約,并關聯到相應的帖子。然后頁面會自動刷新,顯示最新的評論列表。

2 系統實現

2.1 智能合約

本系統使用Vyper語言編寫智能合約,首先定義了一個名為post_struct的結構體,用于表示一個帖子的信息,包括帖子標題、帖子內容、帖子位置(帖子ID)、帖子發布時間、圖片哈希值(圖片CID)、評論數組和評論位置,post_struct中的變量見表2。

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

2.2 前端頁面

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

Vue使用的是組件化的開發,本系統主要包含5 個組件,分別為App.vue、Header.vue、HomeView.vue、PublishView.vue、PostView.vue。

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

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

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

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

5)PostView.vue帖子詳情組件,在該組件渲染的頁面中,會顯示當前帖子的標題、內容、圖片以及評論列表。用戶還可以在評論框中輸入自己的評論,并點擊發送按鈕來發表評論。該組件實現的頁面效果如圖5 所示。

3 結束語

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

主站蜘蛛池模板: 自拍偷拍欧美日韩| 亚洲中文字幕无码爆乳| 国产丝袜无码一区二区视频| 亚洲国产天堂久久综合226114| 久久综合色天堂av| 无码AV高清毛片中国一级毛片| 国产精品福利导航| 亚洲嫩模喷白浆| 亚洲 欧美 偷自乱 图片| 囯产av无码片毛片一级| 黄色网页在线观看| 2021最新国产精品网站| 国产人成在线视频| lhav亚洲精品| 国产激情无码一区二区三区免费| 日本不卡在线视频| 91成人在线免费观看| 欧美在线一二区| 色综合婷婷| 欧美三级不卡在线观看视频| 一级毛片免费的| 国产区在线观看视频| 欧美成人在线免费| 国产在线观看91精品| 九九热精品视频在线| 2020精品极品国产色在线观看| 亚洲精品视频免费观看| 国产玖玖视频| 亚洲日韩第九十九页| 香蕉色综合| 色综合久久综合网| 国产成人亚洲无吗淙合青草| 亚洲人妖在线| 中文天堂在线视频| 久久久久夜色精品波多野结衣| 亚洲Av综合日韩精品久久久| 国产精品2| 亚洲天堂网在线观看视频| 亚洲天堂网在线视频| AV片亚洲国产男人的天堂| 曰AV在线无码| 欧美精品伊人久久| 免费国产小视频在线观看| 亚洲AV无码乱码在线观看裸奔 | 午夜啪啪网| 18禁高潮出水呻吟娇喘蜜芽| 亚洲高清中文字幕在线看不卡| 四虎永久在线精品影院| 国产乱子伦手机在线| 一本大道香蕉高清久久| 色综合网址| 成·人免费午夜无码视频在线观看 | 国产精品短篇二区| 3344在线观看无码| 国产综合精品一区二区| 中文字幕 欧美日韩| 91系列在线观看| 天堂亚洲网| 91精品综合| 18禁色诱爆乳网站| 伊人久久综在合线亚洲91| 中文字幕在线永久在线视频2020| 成人亚洲天堂| 日韩 欧美 国产 精品 综合| 在线日韩日本国产亚洲| 高清久久精品亚洲日韩Av| 永久在线精品免费视频观看| 动漫精品啪啪一区二区三区 | 国产精品一区二区久久精品无码| 免费国产好深啊好涨好硬视频| 一区二区三区高清视频国产女人| 国产69精品久久久久孕妇大杂乱| 日韩欧美网址| 青青青国产视频手机| 亚洲另类第一页| 国产精品yjizz视频网一二区| 国产精品丝袜在线| 国产一区二区丝袜高跟鞋| 天天综合网在线| 色综合天天娱乐综合网| 99精品在线看| 国产区成人精品视频|