## Gear 智能合约 -- Vara Network ### 使用 `GearKeyring` API 本 PPT 链接: https://hackmd.io/@btwiuse/keyring 参考文档: https://wiki.gear-tech.io/docs/api/keyring --- # `GearKeyring` Keyring enables you to manage your key pair (account) to perform a wide range of operations, including signing, verifying and encrypting/decrypting. The SecretKey is never exposed to the outside. - https://wiki.gear-tech.io/docs/api/keyring/ - https://github.com/gear-tech/gear-js/tree/main/api#keyring ``` import { GearKeyring } from '@gear-js/api'; ``` 👉 https://gear.sh --- ## Create keyring Creating a new keyring ```javascript const { keyring, json } = await GearKeyring.create('keyringName', 'passphrase'); ``` Getting a keyring from JSON ```javascript const jsonKeyring = fs.readFileSync('path/to/keyring.json').toString(); const keyring = GearKeyring.fromJson(jsonKeyring, 'passphrase'); ``` Getting JSON for keyring ```javascript const json = GearKeyring.toJson(keyring, 'passphrase'); ``` --- Getting a keyring from seed ```javascript const seed = '0x496f9222372eca011351630ad276c7d44768a593cecea73685299e06acef8c0a'; const keyring = await GearKeyring.fromSeed(seed, 'name'); ``` Getting a keyring from mnemonic ```javascript const mnemonic = 'slim potato consider exchange shiver bitter drop carpet helmet unfair cotton eagle'; const keyring = GearKeyring.fromMnemonic(mnemonic, 'name'); ``` Generate mnemonic and seed ```javascript const { mnemonic, seed } = GearKeyring.generateMnemonic(); // Getting a seed from mnemonic const { seed } = GearKeyring.generateSeed(mnemonic); ``` --- ## Default Accounts In most cases on development chains, Substrate has a number of standard accounts that are pre-funded. Generally when operating on development chains, you will be introduced to characters such as `Alice`, `Bob`, `Charlie`, `Dave`, `Eve` and `Ferdie`. To create keyring from pre-installed accounts use: ```javascript const keyring = await GearKeyring.fromSuri('//Alice'); ``` --- ### Sign data <details> <summary>Example</summary> 1. Create signature ```javascript import { GearKeyring } from '@gear-js/api'; const message = 'your message'; const signature = GearKeyring.sign(keyring, message); ``` 2. Validate signature ```javascript import { signatureIsValid } from '@gear-js/api'; const publicKey = keyring.address; const verified = signatureIsValid(publicKey, signature, message); ``` </details> ### Convert public keys into ss58 format and back Use `encodeAddress` and `decodeAddress` functions to convert the public key into ss58 format and back. <details> <summary>Example</summary> 1. Convert to raw format ```javascript import { decodeAddress } from '@gear-js/api'; console.log(decodeAddress('5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY')); ``` 2. Convert to ss58 format ```javascript import { encodeAddress } from '@gear-js/api'; console.log(encodeAddress('0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d')); ``` </details> --- 总结 - create keyring from mnemonics / seed - sign messages & verify signature - sign transactions 课后作业:使用 Keyring API 创建命令行工具,生成地址,并实现验证签名的功能 ``` ./cli create --uri=... > keyring.json ./cli verify --keyring=keyring.json "message to verify" ``` --- # Questions <img src="https://hackmd.io/_uploads/SyK8P72d2.jpg" width="240" alt="GEAR"> <img src="https://hackmd.io/_uploads/By_kgE3_2.png" width="240" alt="VARA"> 课后答疑频道: https://t.me/Gear_CN
{"title":"GearKeyring API","slideOptions":"{\"theme\":\"solarized\",\"spotlight\":{\"enabled\":false}}","contributors":"[{\"id\":\"94262fbf-81ae-4ed7-933c-561a41bd977a\",\"add\":4743,\"del\":1228}]","description":"gear keyring"}
    320 views