是否可以使结构的某些字段仅对合同所有者可用?
Is it possible to make certain fields of a structure only available to contract owner?
例如,给定以下结构,我希望某些字段仅对合同所有者可见
struct Participant{
address participantAddress; // can be seen by anyone
string team; // can be seen by anyone
string personalDescription; // can be seen by anyone
string secret // can be seen only by contract owner
}
// Mapping each participant to an uint id
mapping(address=>Participant) public participantsMapping;
换句话说,检查 participantsMapping 的人可以看到除秘密字段之外的所有字段(只有所有者才能看到)
据我所知,“private”关键字不隐藏任何数据,它只是一个代码级说明符。
函数有修饰符,但它们也适用于结构中的字段吗? 如果没有,如何实现?
modifier onlyOwner() {
require(msg.sender==ownerAddress,
"Visible only by owner");
_;
}
没有。存储私人数据 on-chain 是不可能的。
可以加密数据,这样只有拥有密钥的人才能访问它。有关用法示例,请参阅 https://docs.metamask.io/guide/rpc-api.html#example-4 and https://docs.metamask.io/guide/rpc-api.html#encrypting。
例如,给定以下结构,我希望某些字段仅对合同所有者可见
struct Participant{
address participantAddress; // can be seen by anyone
string team; // can be seen by anyone
string personalDescription; // can be seen by anyone
string secret // can be seen only by contract owner
}
// Mapping each participant to an uint id
mapping(address=>Participant) public participantsMapping;
换句话说,检查 participantsMapping 的人可以看到除秘密字段之外的所有字段(只有所有者才能看到)
据我所知,“private”关键字不隐藏任何数据,它只是一个代码级说明符。
函数有修饰符,但它们也适用于结构中的字段吗? 如果没有,如何实现?
modifier onlyOwner() {
require(msg.sender==ownerAddress,
"Visible only by owner");
_;
}
没有。存储私人数据 on-chain 是不可能的。
可以加密数据,这样只有拥有密钥的人才能访问它。有关用法示例,请参阅 https://docs.metamask.io/guide/rpc-api.html#example-4 and https://docs.metamask.io/guide/rpc-api.html#encrypting。