Ethereum 如何更新IPFS上的数据
我以JSON对象格式存储IPF上的用户信息,然后将该文件散列存储在区块链上。我想在每次添加新的用户对象时更新JSON对象数组。我怎样才能做到这一点Ethereum 如何更新IPFS上的数据,ethereum,ipfs,js-ipfs,Ethereum,Ipfs,Js Ipfs,我以JSON对象格式存储IPF上的用户信息,然后将该文件散列存储在区块链上。我想在每次添加新的用户对象时更新JSON对象数组。我怎样才能做到这一点 我正在使用以太区块链和ReactJS,下面是一个智能合约的示例,可用于维护指向用户对象的链接列表 每个用户都被分配一个唯一的标识符(例如,没有分隔符的GUID只适合字节32)。 方法PutUser用于添加/更新指向用户对象的链接。 GetUser方法用于获取指向用户对象的链接。 方法GetUsersList用于获取用户列表 当您更改某个用户的对象时,
我正在使用以太区块链和ReactJS,下面是一个智能合约的示例,可用于维护指向用户对象的链接列表 每个用户都被分配一个唯一的标识符(例如,没有分隔符的GUID只适合字节32)。 方法PutUser用于添加/更新指向用户对象的链接。 GetUser方法用于获取指向用户对象的链接。 方法GetUsersList用于获取用户列表 当您更改某个用户的对象时,您会再次将其放入IPFS中,并使用PutUser
pragma solidity >=0.5.8 <0.6.0;
contract UsersList
{
address Owner ;
struct IpfsLink
{
bytes32 used ;
string link ;
}
mapping (bytes32 => IpfsLink) UsersIpfsLinks ;
bytes32[] Users ;
//
constructor() public
{
Owner = tx.origin ;
}
//
function PutUser(bytes32 user_, string memory ipfs_link_) public
{
if(msg.sender!=Owner) return ;
if(UsersIpfsLinks[user_].used!="Y")
{
UsersIpfsLinks[user_]=IpfsLink({ used: "Y", link: ipfs_link_ }) ;
Users.push(user_) ;
}
else
{
UsersIpfsLinks[user_].link=ipfs_link_ ;
}
}
//
function GetUser(bytes32 user_) public view returns (string memory retVal)
{
return(UsersIpfsLinks[user_].link) ;
}
//
function GetUsersList() public view returns (bytes32[] memory retVal)
{
return(Users) ;
}
}
pragma solidity>=0.5.8 IpfsLink)用户SIPFSLINKs;
字节32[]个用户;
//
构造函数()公共
{
所有者=tx.origin;
}
//
函数PutUser(bytes32 user,字符串内存ipfs\u link)public
{
如果(消息发送者!=所有者)返回;
if(UsersIpfsLinks[user_389;].已使用!=“Y”)
{
UsersIpfsLinks[user_]=IpfsLink({使用:“Y”,link:ipfs_link});
用户。推送(用户);
}
其他的
{
UsersIpfsLinks[user_u3;].link=ipfs_3;link;
}
}
//
函数GetUser(bytes32 user_u2;)公共视图返回(字符串内存返回)
{
return(UsersIpfsLinks[user\].link);
}
//
函数GetUsersList()公共视图返回(bytes32[]memory retVal)
{
返回(用户);
}
}
IPFS哈希基于内容,因此在本例中,当JSON数据更改时,IPFS哈希将更改。这意味着必须更新链上的内容哈希
你能分享你试过的代码吗?