Вступ
Хоча існує загальний контракт з декількома підписами, який дозволяє кворуму підписуючих осіб затверджувати довільні команди Майкельсона в блокчейні. Контракт поводиться більше як користувач, за довільну дію якого голосують, ніж як охоронець.
Що мається на увазі під «арбітражним дією»? Цей універсальний контракт з декількома підписами приймає довільний код Майкельсона в якості основного входу: підписувачі повинні знати, що робить цей код, щоб знати, за що вони голосують.
Ми використовуємо інший підхід: контракт з декількома підписами спеціалізується на конкретному типі контракту, який ви хочете використовувати з ним. Тобто параметри контракту з декількома підписами повинні відповідати параметрам контракту, яким він керує.
Він буде виконувати тільки ті дії, які очікує ваш контракт. Це запобігає виконанню будь-яких дій, які не підтримує базовий контракт.
Щоб налаштувати спеціалізований контракт з декількома підписами і взаємодіяти з ним:
- Використовуйте інструмент командного рядка
lorentz-contract-mulitsig
для створення вашого контракту з функцією мультіподпісу зі спеціалізованим типом цільового пара метра - Надішліть підписані байти транзакції за допомогою
tezos-client
усім учасникам-адміністраторам
Дотримуйтесь інструкцій в налаштуванні клієнта, щоб налаштувати
tezos-client
і створити тестовий мережевий гаманець.Клонуйте репозиторій
lorentz-contract-multisig
і дотримуйтесь інструкцій в README, щоб встановити залежності, необхідні для використання lorentz-contract-multisig
.Не забудьте налаштувати
ALICE_ADDRESS
і BOB_ADDRESS
в тестовій мережі, як описано тут; ми будемо використовувати ці змінні в цьому керівництві.Ми хочемо, щоб наші публічні/приватні ключі працювали з клієнтом:
Ось зручний спосіб отримати їх, якщо
tezos-client
зареєстрував/активував ваш обліковий запис:get_public_key(){ tezos-client show address $1 2>/dev/null | tail -n 1 | cut -d " " -f 3;}
get_secret_key(){ tezos-client show address $1 -S 2>/dev/null | tail -n 1 | cut -d ":" -f 3;}
$ get_public_key alice
edpkvCHgVArnZo9RTP4P6euLTyhE89u73CYjBgsP4wEJbj4quao9oR