Могу ли я заключить контракт с держателем ключа для мультисайтового кошелька?

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

5 голосов | спросил Jeffrey Liang 6 J0000006Europe/Moscow 2017, 02:13:47

3 ответа


1

Если я правильно понимаю ваш пример использования, вы хотите заключить договор, разрешающий некоторые транзакции, участвуя в многосубном кошельке. Если эта транзакция находится на блочной цепочке, эта функция присуща Ethereum. Вы можете установить контракт на транзакцию, который будет не только запрашивать одобрение пользователей, но и другие контракты участников.

Эти контракты участников могут быть запрограммированы в Solidity для утверждения экземпляра упомянутого договора транзакции после удовлетворения определенных условий.

Надеюсь, что ответ на ваш вопрос.

ответил Omkar Khair 6 J0000006Europe/Moscow 2017, 21:09:42
1

В ответ на ваш второй вопрос контракт не может инициировать транзакцию, поэтому он никогда не сможет «знать, когда это подходит», чтобы что-либо сделать.

Контракт должен быть вызван транзакцией, отправленной с внешней учетной записи (обычной учетной записи пользователя) или каким-то Oracle, например Oraclize.it.

Кроме того, просто чтобы отметить, что если контракт способен подписывать транзакции, это означает, что его закрытый ключ должен храниться открыто на блочной цепочке (или ключ отправляется в контракт каждый раз, когда ему нужно что-то подписать). В любом случае каждый сможет увидеть закрытый ключ, и поэтому каждый сможет подписывать транзакции с этой учетной записи. В вашем вопросе не ясно, что вы это осознаете.

ответил Thomas Jay Rush 6 J0000006Europe/Moscow 2017, 22:22:26
0

Вчера я отправил универсальный контракт Solidity для мультиподписи: https://github.com/bitclave/Multiownable

Используя его вчера, вы сможете легко добавить функциональность multi-signatire в любой метод смарт-контракта. Просто подкласс из договора Multiownable и добавьте onlyManyOwners модификатора к методам, которые вы хотите защитить. Это пример простейшего многосегментного кошелька, который вы можете себе представить:

contract SimplestMultiWallet is Multiownable {
    function transferTo(address to, uint256 amount) onlyManyOwners {
        to.transfer(amount);
    }
}

Технически вы сможете transferOwnership массива кошельков и методов, помеченных onlyManyOwners будет выполняться только тогда, когда последний из владельцев вызовет этот метод с теми же аргументами, что и все остальные владельцы.

ответил k06a 10 52017vEurope/Moscow11bEurope/MoscowFri, 10 Nov 2017 13:44:33 +0300 2017, 13:44:33

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132