Новое в блокчейне и смарт-контрактах. Провожу исследование и понимаю, что не могу обновить смарт-контракт транзакции. Можно ли хранить данные базы данных в качестве записи в бухгалтерской книге или в другом смарт-контракте, который только я обновляю, чтобы смарт-контракт транзакции мог получить доступ к данным?
Например
Пользователь хочет сделать пожертвование в пользу организации. Его кошелек должен включать все возможные организации, чтобы он мог выбрать из базы данных, которую я хотел бы децентрализовать.
Где я могу хранить организации и адреса их кошельков, а также обновлять или удалять их? Также я хочу добавить подразделы организации и ее адрес.
Например
Кошелек пользователя втягивает:
Я бы читал только о добавлении организаций и их удалении. Есть ли способ сделать все это децентрализованным внутри блокчейна?
Крис
Смарт-контракты могут иметь массивы и карты в качестве структур данных, которые постоянно хранят состояние в блокчейне, а функции смарт-контракта могут их изменять.
Для вашего примера вы можете использовать что-то вроде этого:
pragma solidity ^0.4.16;
contract MyOrgDatabase {
struct Organization {
address _where;
string _name;
}
Organization[] public availableOrgs;
address public owner = msg.sender;
function addOrg(address _where, string _name) {
require(msg.sender == owner);
availableOrgs.push(Organization(_where, _name));
}
}
Этот контракт имеет общедоступную availableOrgs
собственность, которую любой может прочитать из блокчейна. Но только адрес, по которому был создан контракт ( owner
), может добавлять организации в этот список (возможно, вы также захотите добавить функции для удаления организаций из списка или изменения владельца контракта для полнофункционального контракта, но это должен дать вам представление).
Эдуардо Перейра
ПолночьМолния
address
типа имеет размер, специально предназначенный для хранения адресов Ethereum (обычно это длинные числа в шестнадцатеричном кодировании).Аникет Саха
ПолночьМолния
ПолночьМолния