O que é o MyAlgo Connect?
MyAlgo Connect é um SDK (Kit de Desenvolvimento de Software) para desenvolvedores de DApps. Ele permite aos usuários da WebApp revisar e assinar transações Algorand usando contas seguras dentro de sua Carteira MyAlgo. Isto permite que os aplicativos Algorand usem a Carteira MyAlgo para interagir com a blockchain Algorand e que os usuários tenham acesso aos aplicativos de forma privada e segura.
A integração com a Carteira MyAlgo permite aos usuários acesso seguro aos DApps Algorand. Os usuários só precisam compartilhar seus endereços públicos com a WebApp e isto, por sua vez, lhes permite rever e assinar todos os tipos de transações sem expor suas chaves privadas. A principal novidade do MyAlgo Connect reside no fato de que todo o processo é gerenciado no navegador do usuário, sem a necessidade de qualquer serviço backend, nem de downloads, extensões ou plugins de navegador. Ao contrário de carteiras baseadas em extensões como Metamask ou AlgoSigner, o MyAlgo Connect funciona com qualquer navegador (incluindo Safari) e qualquer dispositivo que dá aos desenvolvedores uma solução HTML5 nativa que funciona em todas as plataformas.
O MyAlgo Connect suporta todos os tipos de transações Algorand, incluindo grupos de transações atômicas. Ele também suporta carteiras de hardware Ledger e é totalmente compatível com o AlgoSDK. Os desenvolvedores podem facilmente construir transações no MyAlgo Connect da mesma forma que usam o AlgoSDK.
Como ele Funciona?
Um novo mecanismo no topo da API do navegador foi desenvolvido, e é chamado de Communication-Bridge. Este componente Communication-Bridge é um middleware (“cola de software”) JavaScript que troca mensagens entre as janelas do navegador, abas ou iFrames. O myalgo-connect é uma biblioteca Javascript simples que aproveita a UI (Interface do Usuário) da Carteira MyAlgo e os recursos para permitir a assinatura segura de transações através de wallet.myalgo.com.
Uma simples chamada para o myalgo-connect do aplicativo do cliente aciona um popup em uma nova aba do navegador solicitando ao usuário que desbloqueie sua carteira e posteriormente conceda acesso aos recursos do myAlgo, retornando as contas da carteira:
const accounts = await myAlgoWallet.connect();
O código do myalgo.com é executado no popup, permitindo ao usuário verificar o que está sendo assinado e solicitar uma senha para assinar a transação do aplicativo do Cliente. A carteira de hardware da Ledger é totalmente suportada e os recursos multi-sig (multiassinatura) também estarão chegando em breve
Iniciando
Para começar, os desenvolvedores precisam integrar a biblioteca, instalando-a com npm. O readme do MyAlgo Connect cobre todos os detalhes sobre este pacote, incluindo um tutorial. Além disso, é fornecido um aplicativo de teste que utiliza o MyAlgo Connect, que os desenvolvedores podem rever.
INSTALAR
npm install @randlabs/myalgo-connect
CONECTAR
Primeiro de tudo, antes de construir qualquer transação, é necessário pedir ao usuário que autorize e compartilhe as contas.
O método connect() deve ser chamado dentro de uma função que tenha sido acionada por um clique. Uma nova janela do navegador será aberta pedindo a permissão do usuário para compartilhar seus dados com o site, bem como selecionando quais contas deseja que sejam conectadas ao aplicativo do Cliente. Se o usuário aceitar, ele retornará um vetor de conta, se não, o método connect() emitirá um erro.
const { MyAlgoWallet } = require('@randlabs/myalgo-connect');
const myAlgoWallet = **new** MyAlgo();
myAlgoWallet.connect()
.then((accounts) => {
_// Accounts é um vetor que tem todos os endereços públicos compartilhados pelo usuário_
})
.catch((err) => {
_// Erro_
});
TRANSAÇÃO DE ASSINATURA
Fazer uma transação no MyAlgo Connect é tão fácil quanto fazer uma na AlgoSDK.
let txn = {
fee: 1000,
type: 'pay',
from: accounts[0].address,
to: '4SZTEUQIURTRT37FCI3TRMHSYT5IKLUPXUI7GWC5DZFXN2DGTATFJY5ABY',
amount: 1000000, _// 1 algo_
firstRound: 12449335,
lastRound: 12450335,
genesisHash: "SGO1GKSzyE7IEPItTxCByw9x8FmnrCDexi9/cOUJOiI="
genesisID: "testnet-v1.0"
};
myAlgoWallet.signTransaction(txn)
.then((signedTxn) => {
console.log(signedTxn);
_/*_
_ {_
_ txID: "IMXOKHFRXGJUBDNOHYB5H6HASYACQ3PE5R6VFWLW4QHARFWLTVTQ",_
_ blob: Uint8Array(247) [130, 163, 115, 105, 103, 196, 64, 73, 156, 137, 76, 48, 112, 237, ... ]_
_ }_
_ */_
})
.catch((err) => {
_// Erro_
});
Uma vez assinada a transação, ela pode ser enviada para a rede.
const algosdk = require('algosdk');
const algodClient = **new** algosdk.Algodv2('', 'https://api.testnet.algoexplorer.io', '');
algodClient.sendRawTransaction(signedTxn.blob).**do**()
.then((txn) => {
console.log(txn);
_// { txId: "IMXOKHFRXGJUBDNOHYB5H6HASYACQ3PE5R6VFWLW4QHARFWLTVTQ" }_
})
Mais exemplos podem ser encontrados no readme do MyAlgo Connect.
Conclusão
O MyAlgo Connect é um serviço intuitivo ao qual os aplicativos Algorand podem conectar para que os usuários possam assinar transações com segurança. Por não requerer a instalação de nenhuma extensão de navegador, ele pode ser instantaneamente acessível a partir de qualquer navegador ou dispositivo, o que o torna mais intuitivo para usuários não tão qualificados. Finalmente, ele proporciona maior segurança, uma vez que as carteiras baseadas em extensões mantêm as contas desbloqueadas em segundo plano.
Este artigo foi escrito por Alex Yammine e traduzido por Fátima Lima. Seu original pode ser lido aqui.
05 de março de 2021
Latest comments (0)