Удаленная активация кошелька Alphanet Faucet (без tezos-client)
2 ответ
- голосов
-
- 2019-03-03
Да,это возможно с сотез. Первоначально была ошибка с функцией активации,которая была исправлена в 0.2.11 а>. Вы можете сделать что-то вроде следующего,чтобы активировать учетную запись,а также сгенерировать ключи:
import { rpc, crypto } from 'sotez'; // tz1eQV2GqDTY7dTucnjzNgvB5nP4H5c7Xr5m.json const accountJSON = { "mnemonic": [ "raw", "peace", "visual", "boil", "prefer", "rebel", "anchor", "right", "elegant", "side", "gossip", "enroll", "force", "salmon", "between" ], "secret": "0c5fa9a3d707acc816d23940efdef01aa071bdc6", "amount": "12358548903", "pkh": "tz1eQV2GqDTY7dTucnjzNgvB5nP4H5c7Xr5m", "password": "wc0W7jn3Vf", "email": "[email protected]" }; const activateAccount = async (accountJSON) => { let keys; try { const activatedOperation = await rpc.activate(accountJSON.pkh, accountJSON.secret); await rpc.awaitOperation(activatedOperation.hash); keys = await crypto.generateKeys(accountJSON.mnemonic.join(' '), `${accountJSON.email}${accountJSON.password}`); console.log(keys); } catch (e) { console.log(e); } }; activateAccount(accountJSON);
В примере видно,что мнемоника вводится в виде строки,а кодовая фраза - это объединенные значения адреса электронной почты и пароля из файла JSON.
Yes this is possible with sotez. There initially was a bug with the activate function which was just fixed in 0.2.11. You can do something like the following to activate an account as well as generate the keys:
import { rpc, crypto } from 'sotez'; // tz1eQV2GqDTY7dTucnjzNgvB5nP4H5c7Xr5m.json const accountJSON = { "mnemonic": [ "raw", "peace", "visual", "boil", "prefer", "rebel", "anchor", "right", "elegant", "side", "gossip", "enroll", "force", "salmon", "between" ], "secret": "0c5fa9a3d707acc816d23940efdef01aa071bdc6", "amount": "12358548903", "pkh": "tz1eQV2GqDTY7dTucnjzNgvB5nP4H5c7Xr5m", "password": "wc0W7jn3Vf", "email": "[email protected]" }; const activateAccount = async (accountJSON) => { let keys; try { const activatedOperation = await rpc.activate(accountJSON.pkh, accountJSON.secret); await rpc.awaitOperation(activatedOperation.hash); keys = await crypto.generateKeys(accountJSON.mnemonic.join(' '), `${accountJSON.email}${accountJSON.password}`); console.log(keys); } catch (e) { console.log(e); } }; activateAccount(accountJSON);
Some things you can see from the example is that the mnemonic is entered as a string and the passphrase is the concatenated email and password values from the JSON file.
-
- 2019-03-03
Вы можете сделать это с помощью библиотекиeztz. Вот соответствующие команды,на которые вы хотите обратить внимание:
//Point to alphanet node eztz.node.setProvider("https://alphanet.tezrpc.me"); //From https://faucet.tzalpha.net/ var faucet = { "mnemonic": [ "viable", "decline", "spend", "excess", "hour", "panel", "decade", "sniff", "blame", "crane", "enact", "clever", "rival", "bundle", "silk" ], "secret": "b318178ddad24f1f9f789aecdbe62a4f4723f47f", "amount": "19080702922", "pkh": "tz1XfgzFAdNijPdANxxJ69wYUdHfYrWr4bqS", "password": "Omxz6rDlHz", "email": "[email protected]" }; //Generate keys var keys = eztz.crypto.generateKeys(faucet.mnemonic.join(" "), faucet.email + faucet.password); if (keys.pkh != faucet.pkh) throw "Invalid"; //Activate eztz.rpc.activate(faucet.pkh, faucet.secret).then(function(d){ console.log(d); });
Это запрашивает удаленный узелtezrpc Alphanet,создает ключи и подделывает операции локально,а также вводит операцию активации в узел.
You can do this using the eztz library. Here are the relevant commands you want to look at:
//Point to alphanet node eztz.node.setProvider("https://alphanet.tezrpc.me"); //From https://faucet.tzalpha.net/ var faucet = { "mnemonic": [ "viable", "decline", "spend", "excess", "hour", "panel", "decade", "sniff", "blame", "crane", "enact", "clever", "rival", "bundle", "silk" ], "secret": "b318178ddad24f1f9f789aecdbe62a4f4723f47f", "amount": "19080702922", "pkh": "tz1XfgzFAdNijPdANxxJ69wYUdHfYrWr4bqS", "password": "Omxz6rDlHz", "email": "[email protected]" }; //Generate keys var keys = eztz.crypto.generateKeys(faucet.mnemonic.join(" "), faucet.email + faucet.password); if (keys.pkh != faucet.pkh) throw "Invalid"; //Activate eztz.rpc.activate(faucet.pkh, faucet.secret).then(function(d){ console.log(d); });
This queries the remote tezrpc Alphanet node, constructs keys and forges operations locally and injects the activation operation into the node.
Вчера я узнал,что JSON,предоставленный из кошелька Alphanet,необходимо сначала активировать с помощью
activate account
,например../tezos-client activate account myRandomAlias with tzWhAtEvEr.json
(спасибо,Фредси!),что также привело меня к поиску этого раздела в документации разработчика https://tezos.gitlab.io/master/introduction/howtouse.html#get-free-tez .Есть ли способ выполнить это действие безtezos-client,а с помощью библиотеки,такой какeztz или sotez,с удаленным провайдером? Я вижу,что у sotez есть метод «Активировать»,но я безрезультатно пробовал несколько комбинаций значений,извлеченных из JSON сборщика. https://github.com/AndrewKishino/sotez/wiki/Documentation#activate
Когда ZuluRepublic первоначально привлекла Tezos к внедрению Tezos в наш набор продуктов,нам сказали,что этого,вероятно,можно было бы достичь без размещения нашего собственного узла,но теперь мне интересно,правда ли это?
Изменить: Вкратце,я намерен обрабатывать генерацию ключей,хранение,построение транзакций и подписывание локальных (автономных методов) и использование удаленного провайдера только для получения общедоступных данных,таких как блоки,транзакции,балансы,и для широковещательной рассылки подписанных транзакций.
Я привык к сборщикам,которые запрашивают адрес для отправки токенов,где я должен ввести адрес в кошелек,который я контролирую,а затем я могу начать экспериментировать с отправкой и получениемtezzies в моей кодовой базе. Но с этим краном мне кажется,что мне понадобится собственный узел,чтобы я мог использоватьtezos-client для его активации.