前提・実現したいこと
solidityでアクセス制限を実現したいです。
コントラクト作成者のみが保存されているデータにアクセスできるユーザを決める権利を持つプログラムを
solidityで書いているのですが,おそらくmodifierの部分でつまづいています。
発生している問題・エラーメッセージ
許可されているuserからデータへのアクセスができない
該当のソースコード
pragma solidity ^0.5.1; contract Owned{ address public owner; mapping (address=>bool) public authenticated; modifier onlyOwner(){ if(msg.sender != owner) revert(); _; } modifier onlyUser(address user){ if(!(authenticated[user]==true || owner == user)){ revert(); _; } } constructor()public{ owner=msg.sender; } } contract AccessCheck is Owned{ uint256 public UserIndex; uint256 public KeyIndex; string[] stored; function addUser(address _addedUser)public onlyOwner{ authenticated[_addedUser]=true; } function deleteUser(address _deleteTarget) public onlyOwner{ authenticated[_deleteTarget]=false; } function storeData(string memory data) public onlyOwner returns(uint256){ stored.push(data); return KeyIndex++; } function accessData(uint256 index) public view onlyUser(msg.sender) returns (string memory){ return stored[index]; } }
試したこと
accessDataのonlyUserを消すと,期待の動作をするのでstoreFunctionは働いているようです。
なのでmodifierの使い方が誤っているか条件ミスだと思うのですが何が誤っているのか分かりません。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー