坚持决定智能合约项目的工作

Stuck with deciding the working of a Smart Contract Project

所以我正在做一个项目,基本上是在智能合约的帮助下执行医疗保险索赔流程。它是如何工作的:

  1. 用户通过保险公司注册 运行 网站。
  2. 他们通过输入相关医院、保险金额和包含待验证账单的 pdf 文件提出索赔。
  3. 医院使用网站approve/deny根据提供的信息提出索赔。
  4. 保险公司使用网站approve/deny根据提供的信息向用户索赔并向用户付款。
  5. 任何时候有人提交,approves/denies,支付索赔,都会发出一个事件。

这是我的第一个 ethereum/solidity 项目,我不知道如何将其组合在一起。

这是声明的结构:

struct Record {
        uint id; // unique id for the record
        address patientAddr;
        address hospitalAddr;
        string billId; // points to the pdf stored somewhere
        uint amount; 
        mapping (address => RecordStatus) status; // status of the record
        bool isValid; // variable to check if record has already been created or not
    }

我的一些问题是:

  1. 如何 link 向特定用户发送记录?作为一个用户可以使用多个 Metamask 钱包。
  2. 是否可以将所有事件 link 提取到具有 ID 的特定记录,以便我可以向用户显示记录中发生的所有 approvals/denials?
  3. 对于医院来说,除了从智能合约中获取所有记录,然后在前端过滤之外,还有更好的获取关联记录的方法吗?

非常感谢您的帮助。

到 link 特定用户的记录,您需要添加一个映射(我假设您有一个用户 ID),如下所示:

mapping(uint => Record[]) recordsByUserID;

然后您将能够通过以下方式获取知道用户 ID 的记录数组:

Records userRecords[] = recordsByUserID[user_id];

关于事件记录其实很简单,因为我们有 indexed 关键字,让我给你举个例子:

event Approved(uint indexed userId, uint indexed recordId);

对于这样的事件,您可以使用用户 ID 和记录 ID 查询所有事件。

关于第三个问题我建议你用图https://thegraph.com/en/。它基本上通过以非常简单的方式为您索引所有事件来创建您自己的 GraphQL 后端。然后,您就可以 运行 您的 graphql 查询并提高效率。