项目信息与设计
一个 Dapp 新项目。
本项目由 Kemal Kağan Orhan 从零开始开发。我非常感谢他的努力。您可以在 Github 上找到它:[“https://github.com/KemalKO240“]
安装/运行步骤
-
下载并安装 Flutter + Android Studio(或 VS Code)
-
必须下载并安装 Ganache 和 Truffle
-
打开 Ganache 并创建一个新的工作区,将 truffle 配置添加到项目这里
-
项目必须使用 Android Studio 或 VS Code 打开
-
需要更新 ‘ final String _privateKey = ; ‘ 的值,私钥值可以通过在 ganache 的 accounts 部分按顶部一个帐户的键来访问。
-
在控制台中转到项目文件夹并运行“truffle migrate”命令(请注意,合同部署没有问题(也可以在 ganache 或合同页面上查看))
-
在 Android Studio 或 VS Code 中打开的项目中,应打开 pubspec.yaml 文件并执行 Pub Get。
-
应选择互联网浏览器作为平台(例如:Chrome)
-
可以运行项目。(此过程可能需要几分钟。)(可以从运行控制台跟踪,不应输出任何数据。)
-
由于首次启动数据库将为空,请按“首次安装”按钮,然后添加一个虚假/人工产品(此产品项很可能不可见)
-
然后添加真实产品:批发商、货运和市场数据必须按照格式至少添加 4 件,至少按照格式添加 3 件历史价格(图表形成需要此数据量)
1. 摘要
供应链在农产品定价中起着非常重要的作用。影响产品价格的个人或机构属于这些供应链。然而,消费者并不十分了解这些影响产品价格的因素。在这方面,提高消费者意识至关重要。实现这一目标的最佳方法之一是随着工业 5.0 的出现而出现的基于区块链的去中心化系统。本文讨论了使用区块链将产品价格变化透明地反映给消费者。利用智能合约,设计了一个透明的系统,在该系统中跟踪产品价格,并显示了价格受到每个环节影响的程度。此外,该系统有助于比较供应链同一环节的不同公司。通过跟踪产品价格随时间的变化,旨在清楚地显示这些变化的主要原因。通过设计和创建上述系统;通过本项目展示了其需求、方法和好处。
2. 设计
设计方面,实现了一个设计,通过网站和移动应用程序将数据库中注册的产品列在屏幕上。下文所述并如图所示的功能旨在方便用户搜索和查看产品。
- 搜索栏:搜索数据池中给定名称或名称片段以找到特定产品,并在屏幕上显示结果。
- 产品详情:在屏幕上反映所选产品的详细信息。显示产品的特性、供应链中的价格变化图、产品在不同市场中随时间的价??格变化图。
- 添加产品:将所选产品的信息添加到系统中。(只有授权人员可以访问此功能。)
- 固件更新:更新现有产品的信息。(只有授权人员可以访问此功能。)
- 产品移除:从应用程序中删除产品信息。(只有授权人员可以访问此功能。)
- 授权登录屏幕:它为将拥有数据库高级访问权限的授权人员提供访问权限。
3. 方法和技术
我们将使用区块链系统作为方法,以太坊智能合约作为技术,Ganache 进行测试,flutter 进行编码。如果逐一解释这些方法和技术
1. 区块链系统
简而言之,区块链系统是一个由世界各地成千上万台计算机组成的网络,它不存在于单个服务器上。在此网络中,数据以某种注册表的形式保存。如果您想删除任何这些数据,几乎是不可能的,因为数据也必须从所有注册的计算机中删除。这使得区块链系统成为一个高度安全的系统。我们将充分利用这种安全性。因为我们不希望产品价格被其他人更改。
2. 以太坊
虽然比特币在区块链系统中仅用作加密货币,但以太坊同时用于加密货币和项目开发。所以,如果我们称比特币区块链为 1.0,以太坊就成为区块链 2.0。使用以太坊的智能合约,我们可以自动将数据添加到块中。我们可以使用 Solidity 来完成这个自动过程的软件。因此,我们不得不从零开始学习 Solidity 语言,而这门语言在我们学校还没有开设课程,这是为了论文。
3. Ganache
它用于快速运行个人以太坊区块链,您可以使用它来运行测试、执行命令以及检查情况,同时检查链的工作方式。由于正常的主网络非常昂贵,因此此应用程序被用作本地测试。
4. 智能合约
简而言之,智能合约是软件的自动触发,例如当预定事件发生时,将参数传递给函数。智能合约也像普通合同一样有条款。当满足这些条件时,就会发生交易。与普通合同的区别在于,这些智能合约可以自动执行所需交易,无需任何人,通过区块链,这要归功于特定的代码。我们也将使用智能合约,因为我们的目标是减少我们运营中的工作量(警察监督)。
5. Flutter
Flutter 是由 Google 创建的开源界面软件开发套件。它可用于为 Android、iOS、Windows、Mac、Linux 和 Web 开发应用程序。它主要使用 Dart 平台。它拥有数百个现成的小部件,可以方便程序员/设计师的工作。Flutter 仍在不断发展。每天都在为 Flutter 添加新的小部件,最近还宣布了 Flutter 2.10 的 Windows 兼容版本。
4. 使用区块链跟踪市场产品价格的系统架构
该系统由应用层和服务器层两层组成。旨在使所提出的系统用户友好、快速、准确和安全。为了实现这一目标,上述两层所需的工作将在以下标题下详细说明。
图:系统架构
应用层
该系统旨在构建为用户可以在其移动设备上安装的应用程序,或作为可以通过浏览器查看的网站。这在可用性方面提供了优势。为了实现这一优势,需要一个框架,在该框架中可以创建包含 WebAPI 服务的网站和移动应用程序代码。在此背景下,开发了一个具有两种不同模式的应用程序,可供普通用户和软件开发人员使用。这些模式的工作交互过程如图所示,使用了序列图技术。
a) 用户模式
用户在此模式下可以做的事情是有限的。您可以搜索和查找产品。您可以查看产品的价格信息,产品在到达市场之前在何处以及如何变价,并且可以查看产品随时间的月度价格变化。
图:用户序列图
b) 开发人员模式
在此模式下,用户可以充分利用该模式的所有功能。此外,他还可以添加新产品或更新产品信息或删除产品。删除阶段实际上并未完全发生。因为在区块链中,没有任何东西被删除。我们只是假装它被删除了。所以我们将数据改为零,在应用程序上看起来就像被删除了,但实际上并没有被删除。
图:管理员序列图
通信层
通信层用于应用层和服务器层之间的通信。虽然在去中心化系统中没有完全的对等物,但 .sol 文件中定义的合同函数创建的事务调用对象主要执行此任务。为了完成通信,数据必须首先分段发送,然后在再次调用时重新组装。在这样的系统中,这个过程以及许多类似的过程可以被视为通信层。
服务器层
服务器层负责处理请求并将结果发送到应用程序。在此层中,在验证了带有 Web 服务的传入请求并进行了事务处理后,会响应应用程序。这一层实际上是项目的主要目标。在这一部分,传统方法中传输到固定服务器的数据被发送到区块链系统,这是一个完全不同的去中心化网络。矿工会处理这些数据块以获取费用。实际上,没有服务器,只有一个网络,有点像互联网。在项目中,交易通过这个网络进行。这可能会导致出现一些问题。这些问题在“遇到的问题”标题下进行了提及。
5. 使用区块链的市场产品定价系统应用
图:系统中使用的技术架构
图示的市场产品价格跟踪应用程序使用的软件平台可以总结如下。因为区块链网络用作服务器,所以速度可能会有所不同。在 Solidity 语言中使用了支持 0.5.9 及以上版本的智能合约。该系统已通过 Web 浏览器和 Android 移动设备模拟器进行了测试。通过 Flutter 在 Android Studio 平台上为 Web 浏览器和 Android 操作系统的移动设备开发的应用程序。Web3 用于用户和服务器之间的通信,它是 Web 服务的请求协议,响应类型格式设计为 JSON。图表中应用层应用程序的开发和运行细节将在下面解释。
用户部分
- 产品搜索引擎
- 产品相关图
- 更多产品相关图
- 更多产品相关图
- 产品名称和描述
- 批发商比较
- 货运公司比较
- 市场比较
- 开发者页面
- 切换到登录页面
- 授权登录页面
- 切换按钮到产品添加页面
- 产品添加页面
- 产品信息更新页面
- 产品删除按钮
6. 未来研究
- 按类别、品牌、包装尺寸等对产品进行排序。可以添加一个高级搜索引擎,该引擎可以进行分类和过滤,例如
- 该系统可以适应在其他市场使用。
- 可以建立一个系统,以确保开发人员在登录系统时获得加密钱包的批准。
- 现有的图形可以进一步开发或添加新图形。
- 该应用程序可以创建个人通知,以便用户可以跟踪一个或多个产品的价格。
- 可以进一步升级系统的功能和容量。
7. 遇到的问题
这些问题可以归为以下一般标题
GAS 问题
在这个阶段,在处理向系统中上传新数据以及在产品添加或产品更新阶段进行测试时,智能合约的良好设计非常重要。因为要输入的每个产品都将收取一定的 GAS 费用。这是在成本和实施速度方面需要尽量减少的最大问题。
Solidity 语言
问题在于 Solidity 仍然是一门新语言,而且不像 Java 等拥有二十年历史的语言那样工作得好。它们的许多问题仍然存在。此外,由于它是一门集成到去中心化系统中的语言,它也带来了自己的问题。Solidity 将来会经历的优化研究将在未来最小化或最有可能消除这种情况。
待机时间
如上所述,由于没有特定的服务器来处理数据,区块链系统在速度方面可能会出现问题。要摆脱这种情况,增加 GAS 费用是首先想到的解决方案。因为费用越高,矿工的优先级就会转移到那边。此外,等待时间不仅在添加数据时很长,在从系统中接收数据时也很长。这取决于网络的体积、当前的交易数量等。等待时间可能因许多因素而异。
无法删除数据
虽然这是该项目的主要支柱之一,但它也带来了一些问题。如果解释一下;如果输入了任何错误数据,该操作将无法撤销,因为系统中任何内容都无法删除。对于这种情况,应该开发解决方案来防止错误输入。





















