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分布式文件系統上,保證了數據的持久性和可訪問性。本系統展示了區塊鏈技術和分布式存儲技術在社交領域的應用價值,為未來去中心化社交網絡提供了參考和啟示。

主站蜘蛛池模板: 无码日韩人妻精品久久蜜桃| 四虎国产在线观看| 国产精品久久久久久久伊一| 四虎AV麻豆| 美女被躁出白浆视频播放| 国产亚洲精品自在久久不卡| jizz在线观看| 五月天福利视频 | 久久熟女AV| 无遮挡国产高潮视频免费观看| 日韩乱码免费一区二区三区| 伦精品一区二区三区视频| 美美女高清毛片视频免费观看| 亚洲午夜18| 99在线免费播放| 亚洲欧洲日韩综合| 在线播放真实国产乱子伦| 日韩毛片基地| 国产一级毛片yw| 另类专区亚洲| 国产亚洲精久久久久久无码AV| 欧美乱妇高清无乱码免费| 色成人亚洲| 美女被操91视频| 扒开粉嫩的小缝隙喷白浆视频| 国产三级国产精品国产普男人| 亚洲精品爱草草视频在线| 国产在线98福利播放视频免费 | 国产综合欧美| 亚洲日本一本dvd高清| 在线观看无码av五月花| 在线播放国产99re| 日韩国产综合精选| 久久久成年黄色视频| 亚洲成人黄色网址| 五月六月伊人狠狠丁香网| 欧美精品aⅴ在线视频| 3D动漫精品啪啪一区二区下载| 91福利一区二区三区| 亚洲午夜综合网| 中文精品久久久久国产网址| 99ri国产在线| 欧美一级夜夜爽www| 亚洲天堂2014| 国内精自线i品一区202| 日本手机在线视频| 久久国产精品影院| 国产白浆一区二区三区视频在线| 久久夜色精品国产嚕嚕亚洲av| 欧美精品在线看| 激情爆乳一区二区| 成人看片欧美一区二区| 亚洲天堂免费观看| 日本91在线| 国产呦视频免费视频在线观看| 国产真实乱了在线播放| 久久精品人妻中文视频| 99这里只有精品6| 欧洲成人在线观看| 免费在线一区| 亚洲AV无码乱码在线观看代蜜桃 | 久久人人妻人人爽人人卡片av| 在线观看亚洲精品福利片| 亚洲AⅤ波多系列中文字幕| 91美女视频在线| 亚洲综合精品第一页| 在线精品自拍| 精品国产电影久久九九| 亚洲va在线观看| 欧美精品啪啪| 免费在线看黄网址| 青青草一区二区免费精品| 久久综合一个色综合网| 永久天堂网Av| 欧美成人二区| 欧美精品二区| 直接黄91麻豆网站| 亚洲综合专区| 国产人人射| 四虎成人精品在永久免费| 狼友av永久网站免费观看| 蜜桃臀无码内射一区二区三区|