Как я могу сохранить адрес контракта

Я создал приложение для голосования с использованием web3j и ganache, но это небольшая проблема. Я решаю развернуть контракт на голосование каждый раз, когда начинаются новые выборы, и будет администратор, который будет контролировать развертывание контракта, а также начало и конец выборов. Таким образом, при развертывании контракта с голосованием адрес контракта по контракту может получить только администратор. как я могу отправить адрес нормальным гражданам, чтобы они могли позвонить в смарт-контракт. Я подумал о том, чтобы сохранить адрес контракта в обычной базе данных, но если база данных будет взломана или уничтожена, все dapp выйдет из строя. Есть ли в web3j какая-либо функция, с помощью которой я могу хранить строку в самой цепочке блоков? пс. Я видел функцию web3j.dbputString, но понятия не имею, как ее использовать.

private String deployContract(Web3j web3j, Credentials credentials) throws Exception {
        return Election.deploy(web3j, credentials,GAS_PRICE,GAS_LIMIT).send().getContractAddress();
    }

вот сегмент, развернутый по контракту.


person Jensen0726    schedule 24.06.2021    source источник


Ответы (1)


Обычный шаблон проектирования называется Factory. У вас может быть смарт-контракт, который развертывает другие контракты. Это сгенерирует событие, которое будет видно пользователю. См. Uniswap Factory.

В качестве альтернативы вы можете просто заставить конструктор контракта исключать излучение, и это перехватывается пользовательским интерфейсом.

person Mikko Ohtamaa    schedule 24.06.2021