当前位置:   article > 正文

区块链食品溯源案例实现(一)_区块链溯源

区块链溯源

引言:

        食品安全问题一直是社会关注的热点,而食品溯源作为解决食品安全问题的重要手段,其重要性不言而喻。传统的食品溯源系统往往存在数据易被篡改、信息不透明等问题,而区块链技术的引入,为食品溯源带来了革命性的变革。

目录

引言:

区块链食品溯源系统概述

前端代码实现

安装依赖

创建React组件

在App中引入组件

运行与测试



前端代码实现

  • 下面是一个简单的基于区块链的食品溯源前端代码示例,使用了React框架和Web3.js库与区块链进行交互。

安装依赖

  • 首先,确保已经安装了Node.js和npm。然后,在项目根目录下执行以下命令安装依赖
npm install react react-dom react-scripts web3

创建React组件

  • src目录下创建一个名为FoodTraceability.js的React组件文件,并编写以下代码
  1. import React, { useState, useEffect } from 'react';
  2. import Web3 from 'web3';
  3. const FoodTraceability = () => {
  4. const [foodInfo, setFoodInfo] = useState(null);
  5. const [loading, setLoading] = useState(false);
  6. const [error, setError] = useState(null);
  7. useEffect(() => {
  8. const loadFoodInfo = async () => {
  9. try {
  10. // 初始化Web3对象
  11. const web3 = new Web3(Web3.givenProvider || 'http://localhost:7545');
  12. // 连接到区块链网络(这里以本地开发环境为例)
  13. const contractAddress = 'YOUR_CONTRACT_ADDRESS'; // 替换为你的合约地址
  14. const abi = [...]; // 替换为你的合约ABI
  15. const foodTraceabilityContract = new web3.eth.Contract(abi, contractAddress);
  16. // 调用合约方法获取食品信息(这里假设有一个名为getFoodInfo的方法)
  17. setLoading(true);
  18. const result = await foodTraceabilityContract.methods.getFoodInfo('YOUR_FOOD_ID').call();
  19. setFoodInfo(result);
  20. setLoading(false);
  21. } catch (e) {
  22. setError(e.message);
  23. setLoading(false);
  24. }
  25. };
  26. loadFoodInfo();
  27. }, []);
  28. if (loading) {
  29. return <div>Loading...</div>;
  30. }
  31. if (error) {
  32. return <div>Error: {error}</div>;
  33. }
  34. if (!foodInfo) {
  35. return <div>No food info found.</div>;
  36. }
  37. return (
  38. <div>
  39. <h1>Food Traceability</h1>
  40. <p>Food ID: {foodInfo.id}</p>
  41. <p>Producer: {foodInfo.producer}</p>
  42. <p>Production Date: {foodInfo.productionDate}</p>
  43. {/* 根据实际需求添加更多展示信息 */}
  44. </div>
  45. );
  46. };
  47. export default FoodTraceability;

  •         代码中的YOUR_CONTRACT_ADDRESSYOUR_FOOD_ID...(合约ABI)需要替换为实际的值。你可以通过智能合约部署工具获取合约地址和ABI,并根据你的合约定义修改getFoodInfo方法的调用方式。

在App中引入组件

  • src/App.js文件中引入并使用FoodTraceability组件:
  1. import React from 'react';
  2. import './App.css';
  3. import FoodTraceability from './FoodTraceability';
  4. function App() {
  5. return (
  6. <div className="App">
  7. <header className="App-header">
  8. <FoodTraceability />
  9. </header>
  10. </div>
  11. );
  12. }
  13. export default App;

运行与测试

  • 在项目根目录下执行以下命令启动开发服务器
npm start

然后,在浏览器中打开http://localhost:3000/ 访问地址 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/933918
推荐阅读
相关标签
  

闽ICP备14008679号