Я играю с частным блоком Ethereum, и я заинтересован в реализации некоторых умных контрактов. Тем не менее, информация очень ограничена, поскольку это более новая реализация блочной цепи.Каков наиболее эффективный способ хранения данных контракта по цепочке блоков Ethereum?
Как пример, скажем, я хочу заключить договор, содержащий информацию о человеке. Насколько эффективнее создать новый контракт для каждого человека или просто хранить информацию обо всех пользователях в одном и том же контракте?
В псевдокоде эти два варианта выглядят следующим образом.
Вариант 1 (экземпляр нового контракта для каждого человека):
contract = // contract code
ethereum.newContract(contract, userInfo);
Вариант 2 (держать информацию о всех пользователей в рамках одного контракта):
contract = {
var users = [];
// other contract code
}
ethereum.newContract(contract, userInfo);
Вот как мы можем количественно «эффективность» в этом случае:
- Каждый раз, когда создается новый контракт, мы должны разминировать блок для контракта, а затем выполнить любые транзакции, которые пользователь заключает с контрактом. Если мы только экземпляр один контракта, однако, мы только помоему развертывание контракта раз, а потом какая-либо сделка в дальнейшем, но ...
- Если мы идем с возможностью хранения всю информацию для всех пользователей в рамках одного контракта , представляет собой только «разницу» данных контракта («массив» всех пользователей), хранящихся в виде блока, или весь набор данных, хранящихся в каждом блоке? Или ...
- Если мы идем с опцией «контракт на пользователя», то это «пустошь», если мы храним все определение контракта несколько раз (и стоит ли это, возможно, избыточную добычу, место)?
Надеюсь, в моем вопросе был ясен, но если нет, сообщите мне. Я считаю, что этот вопрос является одним из «компромиссов».
(Re: теги - я использую реализацию golang из Эфириума и JavaScript API для взаимодействия с ним.)