私はプライベート イーサリアム ブロックチェーンで遊んでおり、いくつかのスマート コントラクトの実装に興味があります。ただし、これはブロックチェーンの新しい実装であるため、情報は非常に限られています。
例として、個人に関する情報を保持するコントラクトが必要だとします。ユーザーごとに新しい契約を作成するのと、同じ契約ですべてのユーザーに関する情報を保持するのとではどちらが効率的ですか?
疑似コードでは、2 つのオプションは次のようになります。
オプション 1 (個人ごとに新しい契約をインスタンス化する):
contract = // contract code
ethereum.newContract(contract, userInfo);
オプション 2 (1 つの契約ですべてのユーザーの情報を保持する):
contract = {
var users = [];
// other contract code
}
ethereum.newContract(contract, userInfo);
この場合の「効率」を定量化する方法は次のとおりです。
- 新しいコントラクトがインスタンス化されるたびに、コントラクトのブロックをマイニングし、ユーザーがコントラクトに対して行ったすべてのトランザクションをマイニングする必要があります。ただし、コントラクトを 1 つだけインスタンス化する場合は、コントラクトの展開を 1 回のみマイニングし、その後のトランザクションをマイニングしますが...
- すべてのユーザーのすべての情報を1 つのコントラクトに保存するオプションを使用する場合、コントラクト データの "差分" (すべてのユーザーの "配列") のみがブロックとして保存されるか、データ セット全体が 1 つのコントラクトに保存されます。ブロックごと?または...
- 「ユーザーごとのコントラクト」のオプションを使用する場合、コントラクト定義全体を複数回保存すると「スペースを浪費」しますか?
私の質問が明確であったことを願っていますが、そうでない場合はお知らせください。この質問は「トレードオフ」の 1 つだと思います。
(Re: タグ -- 私は Ethereum の golang 実装と、それと対話するための JavaScript API を使用しています。)