Beacon SDK
Connect Wallets with dApps on Tezos
Beacon is the implementation of the wallet interaction standard tzip-10 which describes the connnection of a dApp with a wallet.
Intro
The beacon-sdk
simplifies and abstracts the communication between dApps and wallets over different transport layers.
Developers that plan to develop complex smart contract interactions can use Taquito with the BeaconWallet
, which uses this SDK under the hood, but provides helpful methods to interact with contracts.
Besides this Typescript SDK, we also provide SDKs for native iOS and Android Wallets:
Documentation
The documentation can be found here, technical documentation can be found here.
Installation
npm i --save @airgap/beacon-sdk
Example DApp integration
const client = new DAppClient({ name: 'My Sample DApp' })
client
.requestPermissions() // Send a permission request and automatically show UI to the user to select his favorite wallet
.then((permissions) => {
// Account that has been shared by the wallet
console.log('got permissions', permissions)
})
.catch((error) => console.log(error))
For a more complete example, take a look at the example-dapp.html
file.
Example Wallet integration
const client = new WalletClient({ name: 'My Wallet' })
await client.init() // Establish P2P connection
client
.connect(async (message) => {
// Example: Handle PermissionRequest. A wallet should handle all request types
if (message.type === BeaconMessageType.PermissionRequest) {
// Show a UI to the user where he can confirm sharing an account with the DApp
const response: PermissionResponseInput = {
type: BeaconMessageType.PermissionResponse,
network: message.network, // Use the same network that the user requested
scopes: [PermissionScope.OPERATION_REQUEST], // Ignore the scopes that have been requested and instead give only operation permissions
id: message.id,
publicKey: 'tezos public key'
}
// Send response back to DApp
await client.respond(response)
}
})
.catch((error) => console.error('connect error', error))
For a more complete example, take a look at the example-wallet.html
file.
Adding a wallet to beacon-sdk
Please create a PR and add your wallet here.
For iOS wallets, the wallet needs to define a custom url scheme to support the same-device functionality.
Development
$ npm i
$ npm run build
$ npm run test
Once the SDK is built, you can open the example-dapp.html
file in your browser and try out the basic functionality. To support browser extensions as well, the file should be viewed over a webserver. You can easily start one with python -m SimpleHTTPServer 8000
and then open the file with http://localhost:8000/example-dapp.html
.