Skip to content

Commit

Permalink
Merge pull request #360 from airgap-it/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
AndreasGassmann authored Jun 3, 2022
2 parents 9d39686 + 93ada0e commit 3d8814c
Show file tree
Hide file tree
Showing 31 changed files with 247 additions and 118 deletions.
6 changes: 4 additions & 2 deletions lerna.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
{
"packages": ["packages/*"],
"version": "3.1.0"
"packages": [
"packages/*"
],
"version": "3.1.1"
}
18 changes: 15 additions & 3 deletions packages/beacon-blockchain-substrate/README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,23 @@
# `@airgap/beacon-blockchain-substrate`

> TODO: description
This package is part of the `@airgap/beacon-sdk` project. [Read more](https://github.com/airgap-it/beacon-sdk)

## Introduction

This package adds support for `substrate` based blockchains. It can be used in combination with the `@airgap/beacon-dapp` or `@airgap/beacon-wallet` packages.

## Usage

```
const beaconProtocolSubstrate = require('@airgap/beacon-blockchain-substrate');
import { DAppClient } from '@airga/beacon-dapp'
import { SubstrateBlockchain } from '@airga/beacon-blockchain-substrate'
// TODO: DEMONSTRATE API
const client = new DAppClient({
name: 'Example DApp',
})
const substrateBlockchain = new SubstrateBlockchain()
client.addBlockchain(substrateBlockchain)
```

Check our documentation for more information. [Documentation](https://docs.walletbeacon.io)
6 changes: 3 additions & 3 deletions packages/beacon-blockchain-substrate/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@airgap/beacon-blockchain-substrate",
"version": "3.1.0",
"version": "3.1.1",
"description": "> TODO: description",
"author": "Andreas Gassmann <[email protected]>",
"homepage": "https://walletbeacon.io",
Expand Down Expand Up @@ -34,7 +34,7 @@
"url": "https://github.com/airgap-it/beacon-sdk/issues"
},
"dependencies": {
"@airgap/beacon-types": "^3.1.0",
"@airgap/beacon-ui": "^3.1.0"
"@airgap/beacon-types": "^3.1.1",
"@airgap/beacon-ui": "^3.1.1"
}
}
18 changes: 15 additions & 3 deletions packages/beacon-blockchain-tezos-sapling/README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,23 @@
# `@airgap/beacon-blockchain-tezos-sapling`

> TODO: description
This package is part of the `@airgap/beacon-sdk` project. [Read more](https://github.com/airgap-it/beacon-sdk)

## Introduction

This package adds support for `tezos-sapling`, the sapling integration on the Tezos blockchain. It can be used in combination with the `@airgap/beacon-dapp` or `@airgap/beacon-wallet` packages.

## Usage

```
const beaconProtocolTezosSapling = require('@airgap/beacon-blockchain-tezos-sapling');
import { DAppClient } from '@airga/beacon-dapp'
import { TezosSaplingBlockchain } from '@airga/beacon-blockchain-tezos-sapling'
// TODO: DEMONSTRATE API
const client = new DAppClient({
name: 'Example DApp',
})
const tezosSaplingBlockchain = new TezosSaplingBlockchain()
client.addBlockchain(tezosSaplingBlockchain)
```

Check our documentation for more information. [Documentation](https://docs.walletbeacon.io)
6 changes: 3 additions & 3 deletions packages/beacon-blockchain-tezos-sapling/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@airgap/beacon-blockchain-tezos-sapling",
"version": "3.1.0",
"version": "3.1.1",
"description": "> TODO: description",
"author": "Andreas Gassmann <[email protected]>",
"homepage": "https://walletbeacon.io",
Expand Down Expand Up @@ -34,7 +34,7 @@
"url": "https://github.com/airgap-it/beacon-sdk/issues"
},
"dependencies": {
"@airgap/beacon-types": "^3.1.0",
"@airgap/beacon-ui": "^3.1.0"
"@airgap/beacon-types": "^3.1.1",
"@airgap/beacon-ui": "^3.1.1"
}
}
18 changes: 15 additions & 3 deletions packages/beacon-blockchain-tezos/README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,23 @@
# `@airgap/beacon-blockchain-tezos`

> TODO: description
This package is part of the `@airgap/beacon-sdk` project. [Read more](https://github.com/airgap-it/beacon-sdk)

## Introduction

This package adds support for the `tezos` blockchain. It can be used in combination with the `@airgap/beacon-dapp` or `@airgap/beacon-wallet` packages.

## Usage

```
const beaconProtocolTezos = require('@airgap/beacon-blockchain-tezos');
import { DAppClient } from '@airga/beacon-dapp'
import { TezosBlockchain } from '@airga/beacon-blockchain-tezos'
// TODO: DEMONSTRATE API
const client = new DAppClient({
name: 'Example DApp',
})
const tezosBlockchain = new TezosBlockchain()
client.addBlockchain(tezosBlockchain)
```

Check our documentation for more information. [Documentation](https://docs.walletbeacon.io)
6 changes: 3 additions & 3 deletions packages/beacon-blockchain-tezos/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@airgap/beacon-blockchain-tezos",
"version": "3.1.0",
"version": "3.1.1",
"description": "> TODO: description",
"author": "Andreas Gassmann <[email protected]>",
"homepage": "https://walletbeacon.io",
Expand Down Expand Up @@ -34,7 +34,7 @@
"url": "https://github.com/airgap-it/beacon-sdk/issues"
},
"dependencies": {
"@airgap/beacon-types": "^3.1.0",
"@airgap/beacon-ui": "^3.1.0"
"@airgap/beacon-types": "^3.1.1",
"@airgap/beacon-ui": "^3.1.1"
}
}
12 changes: 6 additions & 6 deletions packages/beacon-core/README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# `@airgap/beacon-core`

> TODO: description
This package is part of the `@airgap/beacon-sdk` project. [Read more](https://github.com/airgap-it/beacon-sdk)

## Usage
## Introduction

```
const beaconCore = require('@airgap/beacon-core');
This package contains internal methods that are used by both the dApp and wallet client.

// TODO: DEMONSTRATE API
```
Unless you need to import types from this package, you probably don't need to add it to your project.

Check our documentation for more information. [Documentation](https://docs.walletbeacon.io)
6 changes: 3 additions & 3 deletions packages/beacon-core/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@airgap/beacon-core",
"version": "3.1.0",
"version": "3.1.1",
"description": "> TODO: description",
"author": "Andreas Gassmann <[email protected]>",
"homepage": "https://walletbeacon.io",
Expand Down Expand Up @@ -34,8 +34,8 @@
"url": "https://github.com/airgap-it/beacon-sdk/issues"
},
"dependencies": {
"@airgap/beacon-types": "^3.1.0",
"@airgap/beacon-utils": "^3.1.0",
"@airgap/beacon-types": "^3.1.1",
"@airgap/beacon-utils": "^3.1.1",
"@types/libsodium-wrappers": "0.7.9",
"bs58check": "2.1.2",
"libsodium-wrappers": "0.7.9"
Expand Down
3 changes: 1 addition & 2 deletions packages/beacon-core/src/clients/client/Client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ import {
import { Serializer, Transport } from '../..'
import { BeaconClient } from '../beacon-client/BeaconClient'
import { AccountManager } from '../../managers/AccountManager'
import { BEACON_VERSION } from '../../constants'
import { getSenderId } from '../../utils/get-sender-id'
import { Logger } from '../../utils/Logger'
import { ClientOptions } from './ClientOptions'
Expand Down Expand Up @@ -215,7 +214,7 @@ export abstract class Client extends BeaconClient {
protected async sendDisconnectToPeer(peer: PeerInfo, transport?: Transport<any>): Promise<void> {
const request: DisconnectMessage = {
id: await generateGUID(),
version: BEACON_VERSION,
version: peer.version,
senderId: await getSenderId(await this.beaconId),
type: BeaconMessageType.Disconnect
}
Expand Down
2 changes: 1 addition & 1 deletion packages/beacon-core/src/constants.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
export const SDK_VERSION: string = '3.1.0'
export const SDK_VERSION: string = '3.1.1'
export const BEACON_VERSION: string = '3'
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ export abstract class MessageBasedClient extends CommunicationClient {
id: request.id,
type: 'postmessage-pairing-response',
name: this.name,
version: BEACON_VERSION,
version: request.version,
publicKey: await this.getPublicKey()
}
}
Expand Down
12 changes: 9 additions & 3 deletions packages/beacon-dapp/README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
# `@airgap/beacon-dapp`

> TODO: description
This package is part of the `@airgap/beacon-sdk` project. [Read more](https://github.com/airgap-it/beacon-sdk)

## Introduction

Use this package on your dApp to instanciate a `DAppClient` object and communicate to wallets.

## Usage

```
const beaconDapp = require('@airgap/beacon-dapp');
import { DAppClient } from '@airgap/beacon-dapp'
// TODO: DEMONSTRATE API
const dAppClient = new DAppClient({ name: "Beacon Docs" });
```

Check our documentation for more information. [Documentation](https://docs.walletbeacon.io)
10 changes: 5 additions & 5 deletions packages/beacon-dapp/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@airgap/beacon-dapp",
"version": "3.1.0",
"version": "3.1.1",
"description": "> TODO: description",
"author": "Andreas Gassmann <[email protected]>",
"homepage": "https://walletbeacon.io",
Expand Down Expand Up @@ -35,10 +35,10 @@
"url": "https://github.com/airgap-it/beacon-sdk/issues"
},
"dependencies": {
"@airgap/beacon-core": "^3.1.0",
"@airgap/beacon-transport-matrix": "^3.1.0",
"@airgap/beacon-transport-postmessage": "^3.1.0",
"@airgap/beacon-ui": "^3.1.0",
"@airgap/beacon-core": "^3.1.1",
"@airgap/beacon-transport-matrix": "^3.1.1",
"@airgap/beacon-transport-postmessage": "^3.1.1",
"@airgap/beacon-ui": "^3.1.1",
"qrcode-generator": "1.4.4"
}
}
3 changes: 1 addition & 2 deletions packages/beacon-dapp/src/dapp-client/DAppClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,6 @@ import {
LocalStorage,
getAccountIdentifier,
getSenderId,
BEACON_VERSION,
Logger
} from '@airgap/beacon-core'
import { getAddressFromPublicKey, ExposedPromise, generateGUID } from '@airgap/beacon-utils'
Expand Down Expand Up @@ -1477,7 +1476,7 @@ export class DAppClient extends Client {

const request: BeaconMessageWrapper<BlockchainMessage> = {
id: messageId,
version: BEACON_VERSION,
version: '3',
senderId: await getSenderId(await this.beaconId),
message: requestInput
}
Expand Down
92 changes: 87 additions & 5 deletions packages/beacon-sdk/README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,93 @@
# `@airgap/beacon-sdk`
# Beacon SDK

> TODO: description
[![npm](https://img.shields.io/npm/v/@airgap/beacon-sdk.svg?colorB=brightgreen)](https://www.npmjs.com/package/@airgap/beacon-sdk)
[![documentation](https://img.shields.io/badge/documentation-online-brightgreen.svg)](https://airgap-it.github.io/beacon-sdk/)
[![GitHub Action](https://github.com/airgap-it/beacon-sdk/workflows/Build%2C%20Test%20and%20Analyze/badge.svg)](https://github.com/airgap-it/beacon-sdk/actions?query=workflow%3A%22Build%2C+Test+and+Analyze%22+branch%3Amain)
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=airgap-it_beacon-sdk&metric=alert_status)](https://sonarcloud.io/dashboard?id=airgap-it_beacon-sdk)
[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)

## Usage
> Connect Wallets with dApps on Tezos
[Beacon](https://walletbeacon.io) is the implementation of the wallet interaction standard [tzip-10](https://gitlab.com/tzip/tzip/blob/master/proposals/tzip-10/tzip-10.md) 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](https://github.com/ecadlabs/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:

- [Beacon Android SDK (Kotlin)](https://github.com/airgap-it/beacon-android-sdk)
- [Beacon iOS SDK (Swift)](https://github.com/airgap-it/beacon-ios-sdk)

## Documentation

The documentation can be found [here](https://docs.walletbeacon.io/), technical documentation can be found [here](https://typedocs.walletbeacon.io/).

## Installation

```
npm i --save @airgap/beacon-sdk
```

## Example DApp integration

```ts
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))
```
const beaconSdk = require('@airgap/beacon-sdk');

// TODO: DEMONSTRATE API
For a more complete example, take a look at the `example-dapp.html` file.

## Example Wallet integration

```ts
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](https://github.com/airgap-it/beacon-sdk/blob/master/scripts/generate-wallet-list.ts).

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`.
Loading

0 comments on commit 3d8814c

Please sign in to comment.