---
# System prepended metadata

title: 專研會議

---

---

title: 結合區塊鏈及浮水印的食品履歷防偽系統的設計與實作

---

**學校重要時辰 :**
1. 11/13前要將成果展公假表交出去 (已完成)
2. 11/13前要將海報交出去(要交PPT) (已完成)
3. 11/13前要將DEMO影片上傳至YouTube (已完成)
4. 11/16 ~ 11/18 成果展 (已完成)
5. 12/11 要將總審文件印3份交給系辦，並將電子檔進行上傳
6. 12/16 總審
7. 1/5 CD封面


**工作分配:**
* PM : 楊皓喆
* 會議紀錄 : 吳燿睿
* 總審文件編輯 : 楊皓喆，吳燿睿，(輔助:吳宇翔，王冠喆，倪梓祐) 
* 主要code(包含資料庫,浮水印,DAPP,智能合約) : 吳宇翔,吳燿睿，(輔助:楊皓喆) 
* smart contract  code & 文件: 倪梓祐，楊皓喆 
* 浮水印 code & 文件 : 王冠喆，(輔助:倪梓祐)


**上週工作內容:**



**本周工作內容 :**
總審PPT第一版
總審文件第四版

**本次工作Dead line : 12/02 23:59分**

---

**總審文件所需要加的內容**

* 論文添加 智能合約 、智能合約 參數說明、互動功能說明、參與者說明
* 論文添加 數據庫模型
* 論文添加 系統需求 詳細說明 (這是啥 ，我們用來幹啥)
ganache https://trufflesuite.com/ganache/
ipfs deskstop 0.30.2
MySQL server 8.0.34.0
Apache httpd 2.4.55
PHP 8.1.24 
* 論文添加 開發工具
remix 1.3.6
* 論文添加 母系統設計
* 論文添加 子系統設計
* 論文添加 母系統功能描述
* 論文添加 子系統功能描述
* 論文添加 母系統 測試 
* 論文添加 子系統測試
 測試包括 功能測試 跟壓力測試

**研究任務**
* 章節 & 圖形的表達方式




***12/8-13不在台灣***
    時間盡量壓短，精簡報告，留意杜拜時區

PPT
1.  滿醜的 (已完成)

2.  系統架構圖換成海報的 (已完成)

3.  大綱簡介改成動機 初衷問題、描述、知道問題描述，出來才知道為什麼做這個
            背景跟問題講得越重越好 巴西蛋、毒奶粉 解決這些問題 (已完成)

    3-1.    從新訂一個大綱，引導評審從問題去了解我們怎麼解決，透過這樣展現出成果

4.  用那些技術去解決這些問題 產品可以做到那些東西，如何解決，達到的效果怎麼樣? 

5.  缺數據跟測試，實驗數據跟結果，證明你的東西有效，從理論上、跑幾次、系統穩定性

6.  完全完成後，至少報告2.3遍

7.  留誘餌，故意製造問題給教授問，引導教授問你會回答的問題[埋餌]
        會議玩先換一個大綱

總審文件
1.  ER模型圖重劃 (已完成)

2.  操作流程圖跟ER模型圖分開 (已完成)

3.  摘要第三段 整頁大小寫統一，保持精簡，版本後編拉掉，專有名詞統一 (已完成)
    3-1補參考文獻

4.  功能擴展與驗證(Page7)，未展現[擴展]跟內容有何關係 (已完成)

5.  第二章 第一段最後面 發揮著不可或缺的作用/修改(博偉:很怪建議換一個表達方式)
    5-1論述會影響到對於區塊鏈跟浮水印的論述 這段看不出不可或缺或很重要 (已完成)

6. 2-1  黑心食用油加入巴西蛋當作例子、中國毒奶粉等等 可以用巴西蛋作為ppt的主題
   2-2  「我們希望打造更加安全的食品供應鏈」 安全的定義是什麼? 看起來像資訊安全的供應系統 (已完成)
        句子修改 聚焦一點 安全是什麼安全可靠是什麼可靠? 方向可以參考 強化哪方面的安全
        以哪個東西作為主詞?
    2-3 浮水印~依然可以被恢復出來 破壞性的壓縮不可解壓縮 搞清楚浮水印的運作原理
        圖片2、3不要直接放在圖片 (已完成)

7.  page11 5.不變性 什麼樣的 完整性、什麼樣的可靠性。 在哪一個方面是完整性的? 運送過程? 食品履歷的製造。
            為什麼可靠? 描述時可以用專有名詞Hash (已完成)

8.  類圖可以拉掉 重新評估圖片是否用的到 活動圖、部屬圖，序列圖-什麼東西的序列圖? 表達整個系統的每個事件 每個事件都會有一張序列圖
    序列圖 怎麼部屬合約 佈署完如何操作 缺少各種系統的關係 母系統串接所有子系統 母對子 子對功能 子系統功能描述滿清楚得了缺圖 補3-2-1~5
    
9.  Hash256改為密碼Hash值、加密 改為 雜湊的結果
    圖五 流程圖換一個 換成正式版的表達方法
    上引號改為上括號 (已完成)

10. 3-2子系統重新評估圖片是否適合 缺子系統設計關係圖 整個系統的架構圖(提到所有技術的架構到底長什麼樣子) 哪個主機 什麼服務 怎麼串接
    3-2-1、2、3、4、5、6 沒有章節直接是1.2.3.4 對子系統沒有太多論述 整套寫清楚對這些功能的描述對這些事情的描述
    為什麼用?誰要用?用起來效果怎麼樣

11. 3-3 ER模型拆掉 字看不到 (已完成)
    3-3、3-4 沒有導言 章不會直接接節 沒有導言的建議都補上去不然看起來很怪
    圖7 (page29)來源取消 

12. 代碼、智能合約、實作code

13. 編成語言改成程式語言 智能合約改成智慧合約 避免中國式稱呼出現整份修改 數據可以改成資料 存儲改成儲存 (已完成)
    檢索改索引 Hash改雜湊值

14. 第35頁 3-6缺導言 (已完成)

15. 單獨寫一個MySQL後端資料整合把php新增到Apache之下
        Apache用到MYSQL哪個外掛軟件打出來 (已完成)

16. 所有提到的技術都要有參考文獻 (已完成)

17. 第四章 先放導言再放圖 時序圖放在系統實作裡面 多少參與者 系統分析要提到，有誰?多少人做那些事，跟系統做那些交互，第三章放用況圖放系統分析最前面
    了解到底多少人要用 序列圖(放在實作裡面)放第四章 每一個人做那些事的時序圖 針對不同的人 他的使用路徑及時序圖

    第四章以人去切 切完後去解釋他的每個功能 最後才是丟系統展示圖

18. 第五章 開一格table 全部能夠使用的功能都放上去 當下使用版本 使用那些軟體 軟體版本
    挑重要的執行程序時間做統計EX 做一百次上鏈 看統計時間是否失敗 功能測試 可用還是不可用
    信賴區間 性能效能分析

19. 直接進結論 跟摘要極度相似 未來與展望 哪邊做不齊 哪邊做齊 





**工作清單**

:::info
**to do**
* 成果展公假表(最晚在11/12前做最終確認)
* 海報PPT(最晚在11/12前做最終確認)
* Demo影片上傳至Youtube(最晚在11/12前做最終確認)
* 資料庫 debug
* IPFS 使用說明文件
:::

:::warning
**in progress**
* IPFS 使用說明文件 (吳燿睿主編)
* 成果展公假表(最晚在11/12前做最終確認)
* 海報PPT(最晚在11/12前做最終確認) 
:::

:::success
**done**
* 資料庫儲存結構圖，ER模型 (吳宇翔)
* 資料庫的加密方法，寫成文件(吳宇翔)
* 總審文件第一版(吳燿睿主編)
* Ganache 使用說明文件(楊皓喆主編)
* smart contract 說明文件(包含參數跟功能)(倪梓祐主編)
:::


---

[TOC]


# 論文題目：結合區塊鏈及浮水印的食品履歷防偽系統的設計與實作 

---

# 摘要

近年來，食品安全日益受到國際社會的關注，特別是隨著食源性疾病和不法食品事件頻繁發生。在這樣的背景下，確保消費者購買到的食品真實、安全且無害，是一項重大的社會責任。區塊鏈技術，作為比特幣的底層技術，具有去中心化、不易竄改和提高透明度等特性，這使得它在食品履歷追踪上擁有天然的優勢。浮水印技術為食品品牌提供了一個真實性的驗證手段，確保消費者購買的是真正由該品牌生產的產品。

本研究旨在設計和實現一套基於區塊鏈及浮水印技術的食品履歷防偽系統。系統利用區塊鏈技術記錄食品從原材料到銷售的完整履歷，並用浮水印技術為各個生產環節提供真實性驗證。為方便消費者查詢，所記錄的食品履歷資訊將生成QR碼，消費者只需掃描該QR碼即可獲得食品的完整履歷，包括生產商、產地、原材料等詳細資訊。透過此系統，不僅可以提高消費者對食品安全的信心和把關能力，還能在食品出現問題時，快速、準確地追踪到可能的問題源頭，確保問題得到及時解決。

結合先進的技術工具，如ganache、ipfs deskstop 0.30.2、MySQL server 8.0.34.0、Apache httpd 2.4.55以及PHP 8.1.24，本研究旨在為食品安全問題提供一個可行、有效且實用的技術解決方案，期望為保障公眾食品安全、確保品牌真實性以及提高食品供應鏈的透明度做出貢獻。

---


# **1. 引言**

隨著全球化和科技進步的步伐，食品供應鏈的結構和管理越發複雜。從田間到餐桌的每一環節都攸關食品的質量和安全性，而近年來不斷爆發的食品安全事故，使消費者的信任度大幅下降。例如，台灣的黑心食用油事件和中國的毒奶粉事件，都深刻揭露了食品供應鏈中潛藏的風險，對社會和經濟帶來了巨大的衝擊。

在這樣的背景下，提高食品供應鏈的透明度和追溯能力，成為了確保食品安全的首要任務。傳統的食品追溯系統，雖然可以提供一定的資訊，但由於其資料孤島和易於篡改的特性，往往不能滿足日益嚴格的食品安全要求。因此，如何利用現代資訊技術，打造一套高效、透明且難以篡改的食品追溯系統，是當前食品安全領域迫切需要解決的問題。

區塊鏈技術，源於比特幣，但其去中心化、數據持久化和不易篡改的特性，使其在許多領域都展現出強大的潛力。在食品供應鏈管理上，區塊鏈可以確保資訊的完整性、真實性和透明度，從而有效增強消費者的信任度。另一方面，數位浮水印技術，作為一種嵌入式資訊保密和驗證技術，可以確保食品相關資訊的真實性和完整性。當這兩種技術結合時，不僅可以提供一套強大的食品追溯和驗證機制，還可以為消費者提供一個快捷、直觀的查詢界面，從而大幅提高他們的購買和消費體驗。

為此，本研究旨在結合區塊鏈技術和數位浮水印技術，設計和實作一套先進的食品履歷追溯系統。透過該系統，不僅可以確保食品資訊的真實性和完整性，還可以大大提高消費者對食品的信心，並在食品安全事故發生時，迅速追踪到問題的源頭，從而確保問題得到及時和有效的解決。

隨著資訊科技的進步，我們相信，這種技術組合將為食品安全帶來革命性的改變，並為食品供應鏈的管理和監控設定新的標準。本研究希望能夠為此做出實質性的貢獻，並推動整個食品產業邁向一個更加安全、可靠和透明的未來。

## **1.1 背景說明**

隨著全球經濟一體化和科技的飛速演進，食品供應鏈變得越來越網絡化與複雜化。多國跨區域的生產與銷售模式使得食品供應鏈更容易面臨各種食品安全風險，特別是在缺乏足夠透明度和追踪機制的情況下。近年所發生的食品安全事件，如台灣的黑心食用油案例及中國的毒奶粉事件，對全球產生了巨大的回響，突顯了食品供應鏈管理的重要性及其現有監控機制的不足之處。

在數據時代，利用技術實現食品追溯和透明度已成為食品安全的一個重要範疇。傳統的食品追溯系統，雖有其功能，但在資料孤立性、完整性不足以及容易被篡改等問題上仍有很大的挑戰。這使得食品安全問題一旦發生，相關的監管和追踪變得困難，進一步影響了消費者信心。

此時，區塊鏈技術以其固有的去中心化、數據持久化和不易篡改的特質，展現出在食品供應鏈管理上的巨大潛力，它可以提供更高度的資訊真實性與完整性保證。同時，數位浮水印技術作為一種獨特的資訊保密與驗證技術，對於確保食品相關資訊的真實性也發揮著不可或缺的作用。當區塊鏈與數位浮水印兩大技術結合，有潛力開創一個更高效、更安全的食品追溯系統，並為消費者創造更好的產品購買體驗。

因此，本節將深入探討當前食品供應鏈管理的挑戰、區塊鏈和數位浮水印技術的結合潛力，以及如何應用這些先進技術打造更加安全、可靠和透明的食品供應鏈。

## **1.2 研究目的**

近年的食品安全事件凸顯了食品履歷追溯在確保食品質量和安全性中的重要性。面對現代食品供應鏈的複雜性和分散性，確保履歷資訊的真實性、完整性和不可篡改性成為了當前的重要挑戰。區塊鏈和數位浮水印技術，分別以其特有的特性，為食品履歷提供了強大的技術支持。因此，本研究旨在探索如何有效地結合這兩大技術，打造一套既可靠又實用的食品履歷追溯系統。

具體研究目的如下：

1. **設計與實現**：基於區塊鏈與數位浮水印技術，設計並實作一套完善的食品履歷追溯系統，使其能夠有效記錄食品從田間到餐桌的完整流程，並確保這些資料的真實性和完整性。
2. **功能擴展與驗證**：進行系統功能的詳細定義，如食品原材料的登記、生產過程的監控、以及終端消費者的查詢等，並透過真實的食品生產與銷售案例進行系統的驗證和優化。
3. **用戶體驗與互動設計**：專注於終端消費者的查詢體驗，設計一個直觀且易於操作的界面，並通過QR碼掃描，使消費者能夠迅速獲得所需的食品履歷資訊。
4. **安全與效能評估**：對整體系統進行安全性和效能的評估，確保在大規模的食品生產與銷售環境下，系統能夠穩定且高效運作。

透過上述的研究目的，本研究期望能提供一套全面而高效的食品履歷追溯解決方案，不僅能提高消費者的信賴度，還能為整個食品供應鏈管理帶來革命性的改變。

---

# **2. 文獻回顧**
在面對當今食品安全的挑戰與需求下，建立一套穩健、可靠的食品履歷追溯系統變得極為重要。此類追溯系統的根本目的是要確保食品的質量和安全，同時提供消費者一個透明、可信的信息來源。在這方面，技術的進步為我們提供了多種可能性。近年來，區塊鏈技術以其不可竄改、分散式的特性，被視為可能的解決方案。與此同時，數位浮水印技術也在數位資料驗證和保護領域中發揮著不可或缺的作用。

在接下來的文獻回顧部分，我們將深入探討區塊鏈技術和數位浮水印技術的基礎知識、原理以及它們如何被應用在食品履歷追溯上。首先，將著重於食品安全與食品供應鏈管理的當前狀態和挑戰。接著，我們會詳細介紹區塊鏈技術，包括它的結構、主要特性和可能的應用。之後，將探索數位浮水印技術，特別是其在確保數據真實性和防篡改方面的功能。

通過本章的文獻回顧，希望能為讀者提供一個清晰的框架，理解本研究的背景、目的和應用的技術基礎。
   

## **2.1 食品安全與食品供應鏈管理**

食品安全一直是全球消費者、生產者和政府關注的核心議題。隨著供應鏈的全球化和複雜化，確保食品從原材料採收到最終進入消費者手中的每一步都符合安全標準變得尤為重要。食品供應鏈管理（FSCM）不僅關注生產過程，還涉及到物流、銷售、回收等各個環節，其主要目的是確保食品質量，同時減少浪費和提高效率。

近年來的多起食品安全事件，如台灣的黑心食用油案例及中國的毒奶粉事件，都指出了當前食品供應鏈管理中的漏洞。在這些事件中，受到污染或偽造的食品原材料進入了供應鏈，而缺乏有效的追溯和透明度機制導致這些問題無法及時被發現和處理。這不僅損害了消費者的健康，也嚴重打擊了消費者對食品供應鏈的信心。

在這樣的背景下，如何提高食品供應鏈的透明度和追溯能力成為了一個迫切的問題。一個有效的食品履歷追溯系統應該能夠準確記錄食品的生產、加工、運輸和銷售等各個環節的資訊，並在需要時迅速提供這些資訊，以便追查和處理任何潛在的食品安全問題。此外，一個好的追溯系統還應該能夠增強消費者的信任，使他們能夠清楚了解他們所購買食品的來源和安全情況。

為了達到這些目的，許多國家和組織都在研究和開發各種食品追溯技術和方法。而在技術層面，區塊鏈和數位浮水印技術的出現為食品履歷追溯提供了新的可能性。區塊鏈技術能夠確保資訊的不可竄改性，使得食品履歷的記錄更加可靠；而數位浮水印技術則可以確保食品相關資訊的真實性和完整性，從而提高消費者的信心。

總之，食品安全和食品供應鏈管理是當前社會面臨的重要問題，而技術的進步為我們提供了解決這些問題的新工具和方法。透過結合區塊鏈和數位浮水印技術，我們有望打造一個更加安全、可靠和透明的食品供應鏈管理系統。
   
## **2.2 區塊鏈技術概覽**

區塊鏈技術是一種創新的分散式資料庫架構，其核心在於將交易資料按時間順序儲存於一連串的區塊之中，並通過密碼學技術確保其安全性和完整性。以下是區塊鏈的主要特點和組成要素：

1. **分散式總帳 (Distributed Ledger)**:
   區塊鏈上的分散式總帳不僅紀錄所有的交易資訊，還確保這些資料是不可篡改的。這種總帳的分散式特性意味著它是由多個節點（例如礦工、使用者等）共同維護，而不是由單一中心機構控制。這樣的設計增加了系統的安全性和可靠性。
2. **智慧合約 (Smart Contract)**:
   智慧合約是一套存放於區塊鏈上的自動執行程式。只要合約中設定的特定條件被觸發，它就會自動執行相對應的操作，如自動轉帳或商品交付等。
3. **公私鑰密碼學 (Public/Private Key Cryptography)**:
   公私鑰加密是區塊鏈的基礎安全機制之一。每位用戶都有一對密鑰：一個是公開的（公鑰），另一個則是私密的（私鑰）。公鑰用於識別用戶，而私鑰用於驗證交易。僅當兩者配合時，交易才能順利完成。
4. **去中心化 (Decentralization)**:
   去中心化是區塊鏈的核心特性之一。透過將控制權分散至網路中的多個節點，區塊鏈能降低中央點故障的風險，提高系統的透明度和安全性。
5. **不變性 (Immutability)**:
   區塊鏈記錄的資料具有不變性，意味著一旦資料被寫入區塊鏈，就無法被修改或刪除。這一特性確保了交易資訊的完整性和可靠性。

除了以上提及的特性，值得注意的是，區塊鏈的操作還依賴於特定的共識機制。這些機制確保了網路中的節點能夠就某一版本的交易記錄達成一致。常見的共識機制有工作量證明 (Proof-of-Work) 和股份證明 (Proof-of-Stake) 等。

區塊鏈的應用範疇非常廣泛，從金融、供應鏈管理到公共服務等領域都有其身影。對於食品履歷追溯來說，區塊鏈提供了一個不可篡改、透明且分散式的解決方案，有助於建立消費者的信任並確保食品安全。

在後續的章節中，我們將探討如何結合區塊鏈和數位浮水印技
 
圖一:區塊鏈架構圖，來源(https://portal.stpi.narl.org.tw/index/article/10471)
   
## **2.3 浮水印技術詳細介紹**

浮水印技術是一項專門在數位訊號中隱藏特定資訊的技術。其主要的應用場景包括了版權保護、數據完整性驗證、數據追踪以及隱藏訊息通訊等。浮水印的核心在於確保隱藏的資訊在各種攻擊或資料操作（例如壓縮、裁切、變更格式等）後依然可以被恢復出來。

**圖二：數位浮水印技術架構** 
來源: [http://msn.iecs.fcu.edu.tw/~ccc/article/20_watermark.pdf](http://msn.iecs.fcu.edu.tw/~ccc/article/20_watermark.pdf)

浮水印技術可以大致分為兩種類型：

1. **浮現式浮水印**：此種浮水印是可見的，經常被用於圖片或影片上作為版權標記，用於識別原創者或版權持有者。
2. **隱藏式浮水印**：不同於浮現式，隱藏式浮水印在正常觀看下是不可見的。它常被用於數據驗證、數據追蹤或保密通訊等場景。

在食品履歷追溯的應用中，我們可以考慮首先使用浮現式浮水印作為初級保護，隨後利用隱藏式浮水印提供額外的安全性，以確保只有授權的接收方能夠完整獲取和檢視相關資訊。

浮水印技術的主要考量指標包括：

1. **安全性**：浮水印的設計必須確保它不容易被修改、刪除或偽造。
2. **隱蔽性**：當使用隱藏式浮水印時，其應該是不易被察覺的，以確保其隱蔽的目的。
3. **強健性**：在進行各種資料操作如壓縮、轉碼或傳輸時，浮水印應該仍能被正確地恢復。
4. **易用性**：浮水印的建立和提取流程應該是直觀且使用者友善的。
5. **保密性**：在某些應用中，浮水印所帶有的資訊需要被加密，以確保其內容的機密性。
6. **應用範圍**：浮水印技術應具備足夠的靈活性，以滿足不同應用領域的需求。
7. **容量**：這指的是浮水印技術能嵌入的資訊量，根據不同的應用，可能需要能嵌入較大量的資訊。

總的來說，結合區塊鏈和浮水印技術，我們不僅能夠提供食品履歷的可靠追溯，還能確保其內容的真實性和完整性，從而更有效地保障消費者的食品安全和權益。
   
## **2.4 相關系統與技術回顧**

隨著科技的發展，食品安全與食品履歷追踪系統成為當前焦點之一。本節將回顧相關的系統與技術，以及與本研究相比，這些系統和技術的特點和優缺點。

### **2.4.1 食品追溯系統介紹**

食品追溯系統的初衷是確保食品的安全性，提供消費者食品生產和流通的透明信息。它整合了農民、製造商、運輸商、加工商、分銷商等多方信息，為消費者提供從原材料到餐桌的完整食品履歷。

多數食品追溯系統採用區塊鏈、物聯網、人工智慧等前沿技術，並搭配智能合約來確保數據的完整性和真實性。消費者可以透過掃描二維碼或商品編號等方式查詢食品的履歷信息，包括但不限於生產日期、來源、品種、加工方式、運輸方法和銷售點等。

### **2.4.2 本研究與食品追溯系統的差異**

食品追溯系統在當今食品安全領域扮演著關鍵角色，旨在確保從農田到餐桌的食品安全和可靠性。然而，本研究所提出的結合區塊鏈和浮水印技術的食品履歷防偽系統不僅關注食品的生產和流通過程，更聚焦於保障資訊的安全性、真實性，並提供消費者更高的信心。以下將詳細探討本研究與傳統食品追溯系統之間的不同之處。

1. **資訊安全與真實性**：本研究不僅注重食品履歷的追踪，更強調資訊的安全性和真實性。透過區塊鏈技術確保食品資訊不會被篡改或刪除，並利用IPFS長期存儲食品圖片，確保資料的持久性和穩定性，並節省存儲成本。
2. **浮水印技術的應用**：與傳統的食品追溯系統不同，本研究引入浮水印技術，進一步加強食品履歷資訊的真實性和安全性，提高消費者的信心。
3. **獨立性與靈活性**：相對於由政府或行業協會運營的食品追溯系統，本研究所提出的系統更具有獨立性和靈活性，商家可以根據自身需要自主選擇搭建和運營方式。


隨著技術的不斷進步和消費者對食品安全要求的提高，未來食品追溯系統將趨於更加智能化、自動化和人性化。例如，透過深度學習和人工智慧技術自動識別食品問題，為消費者提供更加個性化的食品購買建議等。此外，隨著物聯網技術的發展，食品追溯系統將能夠實時追踪食品的溫度、濕度、保存情況等，確保食品在整個供應鏈中的安全性。

結合上述技術回顧，本研究所提出的結合區塊鏈和浮水印技術的食品履歷防偽系統不僅滿足了當前的需求，更具有前瞻性，為未來食品安全提供了有力的技術支撐。

---

# **3. 系統架構與設計**

## 3.1 系統架構描述

```mermaid
graph TD

subgraph "Ganache操作環境" 
    A(Ganache工具)
    B(區塊鏈結構建置)
    C(資料輸入到區塊鏈)
    D(React Native工具)
    E(連結後端資料庫)
    A -->|建置區塊鏈環境| B
    B -->|輸入資料| C
    C -->|開發網站| D
    D -->|連結資料庫| E
end

subgraph "系統架構"
    F(商家)
    G(生產者商家子系統)
    H(浮水印子系統)
    I(IPFS)
    J(區塊鏈)
    K(消費者)
    L(消費者子系統)
    
    F -->|輸入資料| G
    G -->|加入商家LOGO| H
    H -->|生成Hash值| I
    I -->|交易至區塊鏈| J
    K -->|掃描QR code| L
    L -->|驗證查詢食品履歷| J
end

subgraph "登入/註冊流程"
    M(註冊)
    N(密碼加密)
    O(登入)
    P(密碼比對)
    Q(驗證帳戶)
    
    M -->|加密密碼| N
    O -->|加密密碼| P
    P -->|比對密碼| Q
end

subgraph "IPFS操作"
    R(IPFS)
    
    R -->|存儲圖片| I
end
```

類圖
```mermaid
classDiagram
  class FoodTraceabilitySystem {
    +void RegisterUser()
    +void AuthenticateUser()
  }
  class ProducerSubsystem {
    +void AddProduct()
  }
  class WatermarkSubsystem {
    +void MergeImages()
  }
  class IPFS {
    +void UploadImage()
    +void RetrieveImage()
  }
  class Blockchain {
    +void AddTransaction()
    +void VerifyTransaction()
  }
  class SmartContract {
    +void AddProduct()
    +void GetProduct()
  }
  
  class User
  class Producer
  class Consumer
  
  FoodTraceabilitySystem -- User : Uses
  FoodTraceabilitySystem -- ProducerSubsystem : Uses
  FoodTraceabilitySystem -- WatermarkSubsystem : Uses
  FoodTraceabilitySystem -- IPFS : Uses
  FoodTraceabilitySystem -- Blockchain : Uses
  ProducerSubsystem -- SmartContract : Calls
  WatermarkSubsystem -- IPFS : Uses
  IPFS -- Blockchain : Interacts
  SmartContract -- Blockchain : Interacts
  User -- FoodTraceabilitySystem : Access
  Producer -- FoodTraceabilitySystem : Access
  Consumer -- FoodTraceabilitySystem : Access

```

活動圖
```mermaid
graph TD

subgraph SystemArchitecture
    A[使用Ganache工具建置區塊鏈環境]
    B[初始化多個帳號]
    C[建置區塊鏈結構]
    D[輸入資料到區塊鏈]
    E[開發React Native應用程式]
    F[連接到後端資料庫]
    G[提供網路界面]
    
    A --> B
    B --> C
    C --> D
    D --> E
    E --> F
    F --> G
end

subgraph Users
    H[商家]
    I[消費者]
    
    H --> J[輸入食品資料、影像、商家LOGO]
    J --> K[資料傳入浮水印子系統]
    K --> L[加入商家LOGO]
    L --> M[輸出到IPFS]
    M --> N[交易至區塊鏈]
    N --> O[驗證查詢食品履歷]
    O --> P[網站顯示食品履歷]
    
    I --> Q[掃描QR code]
    Q --> R[驗證查詢食品履歷]
    R --> S[顯示食品履歷網站]
end

subgraph Security
    T[註冊時將密碼進行SHA-256加密]
    U[比對密碼時進行SHA-256加密]
    
    T --> U
end

subgraph ImageProcessing
    V[浮現式合併圖像]
    W[隱藏式上傳圖片]
    
    V --> X[選擇兩張圖像]
    X --> Y[合併圖像]
    Y --> Z[轉換為圖像URL]
    
    W --> AA[處理圖像文件]
    AA --> BB[合併圖像和文本信息]
    BB --> CC[添加時間戳]
end

subgraph Blockchain
    DD[將食品圖片存入IPFS]
    EE[分割成多個分割檔案]
    FF[標記Hash值標籤]
    GG[備份在多個伺服器]
    HH[將Hash存入區塊鏈的交易備註]
    
    DD --> EE
    EE --> FF
    FF --> GG
    GG --> HH
end

subgraph DigitalWatermark
    II[驗證區塊鏈的連結資訊真假]
end

A --> B
B --> C
C --> D
D --> E
E --> F
F --> G
H --> J
J --> K
K --> L
L --> M
M --> N
N --> O
O --> P
I --> Q
Q --> R
R --> S
T --> U
V --> X
X --> Y
Y --> Z
W --> AA
AA --> BB
BB --> CC
D --> DD
DD --> EE
EE --> FF
FF --> GG
GG --> HH
O --> II


```

序列圖
```mermaid
sequenceDiagram
    participant User as 消費者/商家
    participant System as 系統

    User->>System: 輸入資料 (食品相關資料、影像、商家LOGO)
    System->>System: 資料處理、加入浮水印
    System->>Blockchain: 將資料及Hash值交易至區塊鏈
    System->>IPFS: 上傳圖片，產生並回傳Hash值
    System->>User: 顯示QR code (包含交易ID)
    
    alt 商家
        User->>System: 註冊 (使用者輸入的密碼加密)
        System->>Database: 儲存使用者資訊 (包括Hash256密碼)
    else 消費者
        User->>System: 登入 (密碼再次加密)
        System->>Database: 驗證使用者資訊 (比對Hash256密碼)
    end
    User->>System: 掃描QR code (連結到網站)
    System->>Blockchain: 驗證查詢食品履歷
    Blockchain->>IPFS: 根據Hash值取得食品圖片
    System->>User: 顯示完整的食品履歷

```

部署圖
```mermaid
graph LR
    subgraph Blockchain
    A[Ganache]
    B[Smart Contracts]
    C[IPFS]
    end

    subgraph Frontend
    D[React Native]
    E[Web Interface]
    end

    subgraph Backend
    F[MySQL Server]
    G[Apache HTTP Server]
    H[PHP]
    end

    subgraph Users
    I[Producers / Merchants]
    J[Consumers]
    end

    A --> B
    B --> C
    B --> F
    E --> B
    E --> C
    E --> F
    G --> H
    H --> F
    I --> E
    J --> E
    I --> A
    B --> J

```


 
圖四:本專題研究食品履歷系統架構圖
如圖四所示，我們的系統有分成消費者跟商家兩種使用者。先由商家透過生產者商家子系統將食品相關資料、影像和商家LOGO輸入進網站裡，系統再將資料傳入浮水印子系統。浮水印子系統先在食品資料跟圖片裡加入商家LOGO，再把圖片輸出進IPFS讓它產生並回傳Hash值，浮水印子系統最後將食品資料和Hash值交易至區塊鏈裡(並獲得交易ID)。消費者則是使用掃描QR code並連結到網站，此時消費者子系統會透過之前的交易ID驗證查詢食品履歷，智能合約會將儲存的Hash值輸進IPFS裡並得到食品圖片，最後將食品履歷跟商家的交易ID輸出到網站裡，消費者就可以看到網站上完整的食品履歷。
我們透過註冊時(其使用register.php)將使用者輸入的密碼值透過hash函式使用‘SHA-2’其中的’SHA-256’技術，其技術為將一個字定義為32位元，透過不同的偏移量，或者使用不同的常數進行數次迴圈加密，達到將欲儲存之資訊加密。將密碼進行加密後將加密後的密碼(後稱其為Hash256)儲存進資料庫之中。
	隨後在使用者登入，輸入密碼時將網頁獲取的密碼再次進行’SHA-256’加密(其使用Logintake.php)將加密後的密碼在後端與資料庫儲存的Hash256進行比對。進行比對前會先進行帳戶名稱比對，透過三重驗證確定使用者的資料是否為資料庫儲存之資訊。
	其比對順序為再資料庫中尋找相同帳戶名稱，隨後將Hash256調取出來並與使用者輸入且加密後的直進行比對，最後再確認其類別是否正確即可完成登入操作。
 
圖五:登入/註冊流程圖浮水印以浮現式與隱藏式結合進行，浮現式將其中一個圖像被視為"產品圖片"，另一個圖像被視為"浮水印照片"。通過點擊"產品圖片"和"浮水印照片"的文件輸入框來選擇兩張圖像，當點擊"合併圖像"按鈕時，其中函數被觸發，讀取所選的兩張圖像文件，並將它們讀取為圖像對象，創建一個 Canvas 元素，並在 Canvas 上繪製這兩張圖像。最後合併的圖像被轉換為圖像 URL，並顯示在網頁上。隱藏式上傳圖片時，會確保只處理圖像文件，會將訊息內容複製到一個臨時的 textarea 元素中，然後選中該文本並執行複製操作。將選定的圖像和使用者輸入的文本信息合併，同時添加時間戳以識別訊息。
至於如何將食品圖片加入區塊鏈中，選擇使用IPFS[10]這項工具。如圖六所示，IPFS是一項檔案儲存與分享系統，將一個圖片存入IPFS裡，該圖片會被分拆成多個分割檔案，並且標上一個Hash值標籤，以有向無環DAG樹狀圖的模式存在於IPFS地圖中，接著這些分割檔案模塊會被備份在兩個以上的伺服器中，即使其中一個節點被刪除也有其他節點進行備份供使用者取用及下載，藉此達到持久儲存的功能。使用者只要輸入對應的Hash值，就能快速在IPFS網路中找到對應的檔案，然後檔案以多個分割模塊的方式儲存在IPFS網路中，由於節點分散在全球網路中可以有更高的穩定性。主要是把IPFS的Hash搜尋功能加入到區塊鏈裡，只要將特定檔案的Hash存入區塊鏈的「交易備註」中，便可以直接引導到特定的檔案，而且該檔案會被分割到多個節點並備份，可以提供更持久且安全的保護。其中數位浮水印[11] 的功能是用於驗證區塊鏈的連結資訊真假與否。
 
圖六: IPFS操作頁面,來源 :IPFS軟體


# 3.2 系統架構

本節將詳細描述結合區塊鏈及浮水印的食品履歷防偽系統的系統架構。系統整體架構由多個子系統組成，涉及商家、消費者、區塊鏈技術、浮水印技術及其相關輔助工具。

```mermaid
graph TD

subgraph "商家子系統"
    A[輸入食品相關資料] --> C[傳送至浮水印子系統]
    B[上傳食品影像和LOGO] --> C
end

subgraph "浮水印子系統"
    C --> D[接收食品資料和影像]
    D --> E[加入浮水印]
    E --> F[存儲圖片於IPFS]
    F --> G[交易至Ethereum區塊鏈]
end

subgraph "區塊鏈技術子系統"
    G --> H[Ganache建置Ethereum環境]
    H --> I[記錄食品履歷數據]
end

subgraph "消費者子系統"
    K[掃描QR碼] --> L[交易ID驗證]
    L --> M[透過Hash值獲取圖片]
    M --> N[顯示食品履歷和圖片]
end

subgraph "安全性子系統"
    O[使用SHA-256加密] --> P[存儲Hash256於MySQL]
    P --> Q[三重驗證使用者身份]
end

subgraph "工具與資源"
    R[Ganache]
    S[IPFS]
    T[MySQL server]
    U[Apache & PHP]
end

style A fill:#f9d,stroke:#333,stroke-width:2px
style B fill:#f9d,stroke:#333,stroke-width:2px
style C fill:#f9d,stroke:#333,stroke-width:2px
style D fill:#f9d,stroke:#333,stroke-width:2px
style E fill:#f9d,stroke:#333,stroke-width:2px
style F fill:#f9d,stroke:#333,stroke-width:2px
style G fill:#f9d,stroke:#333,stroke-width:2px
style H fill:#f9d,stroke:#333,stroke-width:2px
style I fill:#f9d,stroke:#333,stroke-width:2px
style K fill:#f9d,stroke:#333,stroke-width:2px
style L fill:#f9d,stroke:#333,stroke-width:2px
style M fill:#f9d,stroke:#333,stroke-width:2px
style N fill:#f9d,stroke:#333,stroke-width:2px
style O fill:#f9d,stroke:#333,stroke-width:2px
style P fill:#f9d,stroke:#333,stroke-width:2px
style Q fill:#f9d,stroke:#333,stroke-width:2px
style R fill:#f9d,stroke:#333,stroke-width:2px
style S fill:#f9d,stroke:#333,stroke-width:2px
style T fill:#f9d,stroke:#333,stroke-width:2px
style U fill:#f9d,stroke:#333,stroke-width:2px

```

### 3.2.1 商家子系統

商家子系統主要功能包括:
1. 輸入食品相關資料: 包含生產日期、生產地、食品詳細描述等。
2. 上傳食品影像和商家LOGO。
3. 將食品資料及圖片傳送至浮水印子系統進行加密和存儲。

### 3.2.2 浮水印子系統

浮水印子系統具有以下功能:
1. 接收商家輸入的食品資料和影像。
2. 對食品資料和影像加入商家LOGO作為浮水印。
3. 利用IPFS技術，存儲帶有浮水印的圖片，並生成對應的Hash值。
4. 將食品資料和Hash值交易至Ethereum區塊鏈，並生成交易ID。

### 3.2.3 區塊鏈技術子系統

1. 利用Ganache工具快速建置Ethereum區塊鏈客戶端的環境。
2. 記錄從商家子系統和浮水印子系統傳送的食品履歷數據。
3. 提供智能合約功能，用於驗證和查詢食品履歷數據。

### 3.2.4 消費者子系統

1. 掃描QR碼以查詢食品的完整履歷。
2. 透過交易ID驗證查詢食品履歷，從區塊鏈中獲得食品資料及其對應的Hash值。
3. 透過Hash值在IPFS中獲取帶有浮水印的食品圖片。
4. 在網站上顯示完整的食品履歷和圖片，供消費者查看。

### 3.2.5 安全性子系統

1. 使用`SHA-256`技術進行密碼加密。
2. 密碼加密後的Hash256存儲在MySQL資料庫中。
3. 提供三重驗證確定使用者的身份，先比對帳戶名稱，再比對Hash256，最後確認其類別是否正確。

### 3.2.6 工具與資源

1. **Ganache**: 快速建置Ethereum區塊鏈環境，並提供專案開發的測試功能。
2. **IPFS**: 進行食品圖片的分布式儲存，確保圖片的持久性和完整性。
3. **MySQL server**: 儲存用戶資料、食品履歷數據和其他必要資訊。
4. **Apache httpd & PHP**: 為前端和後端之間提供通信橋梁，實現動態網頁功能。

通過以上子系統的協同工作，我們確保食品履歷的真實性、完整性和安全性，並為消費者

提供一個可信的查詢平台。


## 3.3 資料庫設計：MySQL server 8.0.34.0

## 3.4 區塊鏈部分：Ganache 

### 3.4.1 Ganache 介紹

在區塊鏈開發的初期階段，模擬真實的區塊鏈環境是極為重要的。Ganache是Truffle套件中的一部分，提供了一個私有的Ethereum區塊鏈環境供開發者進行測試與開發。它允許研究人員迅速進行智能合約的部署和交互，而不需花費真實的Ether或等待礦工確認，從而提供了快速反饋和迭代的可能性。

### 3.4.2 Ganache 與 Remix IDE 的整合

為了達到更流暢的開發體驗，我們將Ganache的RPC伺服器與Remix IDE連接。通過這個設定，開發者可以在Remix IDE中直接部署智能合約到Ganache所提供的私有區塊鏈，以及管理帳戶和進行測試交易。

### 3.4.3 交易紀錄與數據持久性

每次在Ganache上成功部署或執行交易後，相關的區塊和交易紀錄都會被儲存在Ganache所模擬的區塊鏈中。這些數據會一直保留，除非Ganache伺服器被重置或刪除，確保開發者可以持續追踪和驗證其交易和合約行為。

### 3.4.4 Ganache 的使用場景

Ganache不僅方便於智能合約的測試，還具備了許多其他功能，如網路的管理、帳戶的管理、餘額查詢、交易確認等。它的背後運作原理實際上是利用了Geth客戶端的功能，但將其包裝成一個簡單易用的圖形介面，如圖三所示。

### 3.4.5 實際應用

在本研究中，我們首先將Ganache所提供的區塊鏈工具進行配置和初始化。經過熟悉其API和基本的操作後，我們開始將目標資料輸入到區塊鏈中。之後，我們利用React Native框架開發了一個前端應用程式，該程式連結到後端資料庫，以便用戶可以直觀地查詢和驗證區塊鏈中的資訊。

### 3.4.6 總結

Ganache在此研究中起到了不可或缺的角色，為我們提供了一個快速、穩定且可靠的開發環境，使得整個研究過程更為高效和順暢。透過它，開發者可以更加專注於智能合約的邏輯和功能，而不必擔心環境設置和基礎設施問題。

## 3.5 智能合約設計與實作

隨著全球食品安全議題日益增長，開發一套融合區塊鏈與浮水印技術的食品履歷防偽系統逐漸被視為優先解決方案。在此框架中，智能合約擔任了重要的角色，確保食品履歷資料在整個供應鏈中的真實性、完整性及不可篡改性，並進一步驗證食品生產過程。以下詳述智能合約的設計與實作策略。

### 3.5.1 Solidity：智能合約的核心編程語言

Solidity為以太坊平台的主要智能合約開發語言。由於其強大的特性和廣泛的支持，Solidity已成為區塊鏈智能合約開發的首選。以下列出幾項Solidity的優勢：

- **靜態型別系統**：此特性有助於在編碼階段捕捉到錯誤，提高智能合約的健壯性。
- **繼承**：開發者可以通過繼承機制，建立可重用和模組化的智能合約代碼。
- **事件**：合約可以發射事件，使外部監聽器得知合約的特定動作或更改。
- **資料存儲**：提供了狀態變量以存儲資料，確保資料在區塊鏈上的持久性。

此外，Solidity還提供了多種資安防護機制，如修飾符(modifiers)、緊急停機(emergency stop)等，以增強合約的安全性。

### 3.5.2 Remix：智能合約開發的強大工具

Remix為一網頁版開源智能合約開發環境，專為以太坊智能合約的編寫、部署及測試而設。以下簡述Remix的主要功能和優勢：

- **即時編譯**：開發者可以即時看到代碼編譯的結果，迅速定位和修正問題。
- **測試環境**：提供模擬的以太坊環境，允許開發者部署和測試智能合約，無需連接至實際的區塊鏈網路。
- **靜態分析工具**：協助開發者分析合約代碼，確保其最佳化和避免潛在的安全風險。
- **合約互動介面**：方便開發者直接與部署在測試環境的合約互動，調用其函數和檢視狀態。

總的來說，利用Remix，研究人員或開發者能夠更高效地開發和優化智能合約，並確保其在區塊鏈上的穩定運作。

為實現食品履歷防偽系統，專業的智能合約設計和開發工具是不可或缺的。透過Solidity與Remix的結合，我們可以建立一套既安全又高效的智能合約解決方案，為食品安全問題提供堅固的技術支撐。

### 3.5.3 智能合約結構與功能

智能合約為區塊鏈技術中的重要組件，其不僅確保交易資料的不可篡改性，還可自動執行預定義的業務邏輯。在食品履歷防偽系統中，智能合約負責記錄食品的各項資訊以及進行有效性驗證。以下為此合約的結構及功能詳解：

**1. 自訂資料結構 (Custom Data Structure)**
結構名稱: Product

這個結構是為了建立一套標準化的方式，用以存儲食品的相關資訊。其具體屬性如下：

- **producer (string)**：代表食品的生產者或供應商，如“台灣農場”等。
- **productName (string)**：該食品的名稱，如“有機胡蘿蔔”。
- **imageHash (string)**：這是圖片的哈希值。由於直接在區塊鏈上存儲圖片非常昂貴，我們只存儲其哈希值來驗證圖片的完整性。
- **timestamp (uint)**：此屬性紀錄該筆資料建立的時間，確保資訊的時效性。
- **productCount (uint)**：每當有新的農產品資料被加入，此計數會遞增，方便查詢和統計。

**2. 映射結構 (Mapping)**

這個結構旨在建立產品ID和其相對應的Product資料之間的連結。每一個唯一的產品ID都會指向一個特定的Product資料結構。

**3. 計數變數 (Counter Variable)**

變數名稱: productCount

這個公共變數用來追踪目前合約中存儲的農產品數量，也是為新加入的產品分配唯一ID的基礎。

**4. 事件 (Event)**

事件在以太坊中是一種特殊的記錄機制，用於記錄重要的合約活動。例如，當一個新產品被加入時，`NewProductAdded`事件會被觸發，以通知外部觀察者。

**5. 函數 (Functions)**

- **AddProduct**：此函數允許用戶或系統新增一個農產品的記錄。當新的資訊被成功加入後，會自動遞增`productCount`，並在映射結構中建立新的資料連結。最後，它會觸發`NewProductAdded`事件通知外部。
- **GetProduct**：此函數允許查詢特定ID的農產品資訊。它首先驗證輸入的ID是否存在，若存在則從映射結構中返回相對應的Product資料；若不在有效範圍內，則給予錯誤提示。

透過上述設計，這個智能合約不僅提供了一個完善的食品信息記錄系統，還確保了資料的真實性、完整性和不可篡改性。這對於食品安全和消費者信心的建立至關重要。
 

## 3.6 分散式檔案系統：IPFS

### 3.6.1 IPFS簡介

InterPlanetary File System（IPFS）是一種專為分散式Web設計的點對點檔案系統。它旨在連接所有計算裝置，形成一個單一的分散式系統。透過IPFS，檔案可以跨多個節點儲存，從而提供更高的檔案取得速度和更好的冗餘性。

### 3.6.2 IPFS的工作原理

**DAG樹狀圖**

IPFS使用了一個稱為有向無環圖（DAG）的結構來儲存資料。當用戶嘗試存儲某個檔案時，該檔案將被分割成多個小的資料塊，每一塊都有其唯一的Hash標籤。這些資料塊則按照DAG結構相互關聯，形成一個完整的檔案系統。

**分散式儲存**

為了確保檔案的持久性，IPFS會將檔案的每一個資料塊儲存在多個節點上。這確保了即使某些節點失效，檔案仍然可以從其他活躍節點中獲取。

**檔案檢索**

當需要檢索某個檔案時，用戶只需提供檔案的唯一Hash。IPFS網路將自動搜尋包含該檔案的節點，然後從最接近的節點中取得檔案資料。

### 3.6.3 IPFS於食品履歷系統中的應用

如上文提及，本研究的食品履歷防偽系統使用IPFS來儲存和檢索食品的相關影像和資訊。商家首先將食品相關的資料和影像加入到IPFS中，系統會為此資料產生唯一的Hash值。此Hash值及相關交易資訊隨後被加入到區塊鏈中。

消費者可以透過掃描QR碼，連結到網站並查詢食品履歷。系統透過區塊鏈中的交易ID，檢索對應的Hash值，再從IPFS網路中取得相關的食品圖片和資料。通過這種方式，食品履歷系統能夠確保資料的真實性、完整性和不可竄改性。

### 3.6.4 結論

IPFS提供了一個強大、分散式的檔案儲存解決方案，尤其適合於食品履歷防偽系統這種需要確保資料不可竄改和持久儲存的應用。結合區塊鏈技術，可以確保食品履歷資訊的透明度、真實性和可靠性，從而增強消費者的信心和食品安全。


## 3.7 伺服器端架設：Apache httpd 2.4.55

## 3.8 前端與後端整合：PHP 8.1.24

---

# **4. 系統實作與細節**

 
圖七:系統開發與浮水印驗證流程圖
如圖七的流程圖所示基本認定原則為具有浮水印識別印記的資訊才能判定是正確無誤的，若不具備浮水印識別印記的資料則可大膽推斷為不肖業者魚目混珠，欺騙消費者的事件，這時軟體發出警告，提醒消費者盡量不要購買此產品，以避免自身權利受損。
         
  圖八: 系統入口網站的介面選擇畫面     圖九:DAPP食品履歷
       
圖十:食品履歷詳細資料 圖十一:使用者登錄系統 圖十二:商家上傳畫面

上方圖八為系統入口網站的介面選擇畫面圖，使用者可以從初始頁面中選擇進入使用者模式或者是商家模式，圖九、十為使用者選擇「食品履歷查看及驗證」時所出現之畫面模擬圖，在模擬圖中我們讓使用者可以依據月份做初步的選擇，再依產品履歷的時程進行查看，圖十則為食品履歷展開圖的初步概念圖，顯示產品的圖片、名稱、日期、生產廠商、生產者…等等諸多資訊。另外圖九右上方也有當使用者在非DAPP中獲取食品履歷時供以驗證的驗證按鈕。
圖十一則為在初始畫面選擇「商家端」後顯示之畫面，初步的模擬選擇讓商家擁有自己的帳號密碼可以登入做關於食品履歷以及上傳資料等操作。圖十二為商家登入系統後操作畫面，上方顯示操作的商家名稱，以及供商家操作的三個功能，分別為LOGO上傳、商品照片、食品履歷，商家得以透過商家端來呈現食品履歷詳細資料（圖九）。
透過初步模擬DAPP的架構，讓使用者可以了解自己能從此程式中獲取什麼資料以及可以做些什麼事，也可以使商家了解產品的上傳流程，以及如何在生產、運輸、販售過程中都確保能掌握產品的實際資訊。



## 4.1 系統前端實作

## 4.2 區塊鏈整合與ganache的應用

## 4.3 IPFS檔案存儲與連結

## 4.4 資料庫設計與操作

## 4.5 伺服器配置與優化

---

# **5. 測試與結果分析**

## 5.1 測試環境設置

## 5.2 測試流程與方法

## 5.3 測試結果

## 5.4 結果分析

---

# **6. 討論**

## 6.1 比較優勢與限制

## 6.2 建議與未來研究方向

---

# **7. 結論**

本專題研究是為了要讓消費者能夠在購買食品時更加安心，所以為了要讓消費者只要有手機就能觀看到資料，因此資料就會以網站的方式呈現，內容除了會有最基本的生產資料，還會有浮水印來驗證生產資訊是否正確。
1.	生產者能透過網站來輸入資料，並且透過前後端連結讓消費者能看到生產資訊。
透過JavaScript的技術，建置網站的內容以及服務，在網站的提供之下，使用者可以查閱由商家提供的資訊以及資料是否屬實。
2.	消費者能透過掃條碼看到生產資訊。
消費者能夠透過包裝上的條碼，連結至網站上，透過此方式檢視產品相關生產資訊。
3.	浮水印能夠當驗證生產資訊的密鑰。
浮水印的技術可以讓使用者在網站之中查詢資訊時確認其提供的資訊為正本，在浮水印技術的支援之下，也可以透過網站的識別功能，檢測該資料是否為正確資訊。
4.	當生產資訊及密鑰不吻合時提出適當警告。
透過結合區塊鏈以及浮水印技術，達到檢測的效果，當檢測資訊無法通過其一項檢驗標準時，提出適當警告告訴消費者。
5.	透過區塊鏈的技術以及區塊鏈不可竄改的特性達到資訊儲存以及防止竄改。
透過區塊鏈的技術，將同一批次、單一批次已經確定的資料上傳至區塊鏈，透過區塊鏈不可竄改的特性，進一步對已加上浮水印的資料進行保存以及透過雜湊值的方式加密保存，日後在進行資料驗證以及資料的查驗上都可以進一步的提供正當性的資訊來源。
	本專題研究是要實現消費者在購物時能確保自身的權利不被有心商人損害，透過公開透明的資料，以及讓生產者負起責任的浮水印，雙方在發生糾紛時，區塊鏈提供正確的資訊，以及浮水印的加持下，讓證據更有利的保護當事人。同時區塊鏈連結了上下游的生產情形，廠商可以檢視每個區間的產品狀況，有出任何問題隨時進行處理，來確保生產品質。


# **8. 參考文獻**

# **附錄 A**：系統安裝與配置指南

# **附錄 B**：實際操作畫面與截圖
