4

イーサリアム ブロックチェーンでスマート コントラクトを試しています。Solidity のドキュメントにあるSimpleStorage.sol のような、誰でもアクセスできるストレージ状態を持つコントラクトがあるとします。リンク先の説明の通り、

誰でも別の値で set を再度呼び出して、番号を上書きすることができます

これにより問題が発生する可能性があり、その機能へのアクセスを特定のアカウントに制限するという解決策は、私のユース ケースでは適切ではありません。私の契約では、各アカウントが設定したデータに後で別の所定のアカウントからアクセスできるようにしたいと考えています (人物 A->B で B が A のデータのみを使用し、x->y で y がデータを使用する関係を考えてください)。 y が A のデータを使用できる場合、重複は存在できません)。私の理解では、この問題には 2 つの解決策があります。

  1. アドレスを相互にマッピングし、この単一のスマート コントラクト内のすべてのデータを追跡します。
  2. 最初のアカウントがアクセスするスマート コントラクトの「テンプレート」を用意し、新しいアカウントごとに個別のスマート コントラクトを生成して、テンプレートとやり取りするデータを保持します。

1の問題は、アカウント間の関係がより複雑になった場合 (別々の構造体をマップする場合)、または大量の人々が自分の情報をコントラクトに保存しようとした場合に発生します。

2の問題は冗長性です。メイン テンプレートにアクセスしようとしているすべてのユーザーに対して個別の「契約」を作成する必要がありますか?

私の質問があいまいな場合は、さらに説明できますが、主に概念的な回答を探しています。私が見つけたほとんどのスマート コントラクトの例は、非常に単純であるか不必要に複雑であり、具体的なユース ケースを提供していません。

4

1 に答える 1