-1

我有一个类似这样的智能合约

contract Foo {
    struct Post() {
        ....
    }
    mapping (uint256 => Post) private posts;
    mapping (uint256 => address) private owners;
}

我有一个用 Python 编写的后端代码:

post_matchings = {}

@hug.post('match/post_id/')
def match_file(file_id, post_id):
    1. raise error, if caller of this endpoint is not owner of the post.
    2. Do something.

我怎样才能做到这一点?通过使用签名?

谢谢你的帮助。

4

2 回答 2

0

你可以创建一个视图函数,你可以从后端调用它来获得这个响应,它可能是这样的

function UserMakePost (address user, uint256 postId) external returns (bool) {
  return user == owners(postId);
}

否则,如果由于已经部署而无法修改合同,则可以依靠链下解决方案,例如,如果您已经知道地址,则不能按照您在响应中建议的方式执行,则可以从区块链中读取事件并存储其他解决方案您在数据库中需要的信息,这样您就不需要一直咨询区块链(假设合约发出事件)

于 2022-02-15T21:46:52.840 回答
-1

我找到了答案。您必须向前端发送一个随机字符串,要求前端使用 dapp 钱包对其进行签名,然后将其发送到后端并检查其有效性。

于 2022-01-22T09:07:00.027 回答