Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Update README.md #60

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
188 changes: 17 additions & 171 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,176 +1,22 @@
# React Native WaaS SDK
#vacancy #Moscow #fulltime #tester

This is the repository for the mobile React Native SDK for Wallet-as-a-Service APIs.
It exposes a subset of the WaaS APIs to the mobile developer and, in particular, is
required for the completion of MPC operations such as Seed generation and Transaction signing.
NPP "Digital Solutions" - a developer, manufacturer and supplier (b2b) of telecommunications equipment, strengthens the testing team and is looking for a tester with a desire to develop in the direction of equipment testing.

### Prerequisites:
Tasks:Test telecommunications equipment; Apply test design practices when testing the functions of telecommunications equipment;
Participate in the development and updating of the network equipment testing plan; Develop functional tests of network equipment and test scenarios for its application;

- [node 18+](https://nodejs.org/en/download/)
- [yarn classic 1.22+](https://classic.yarnpkg.com/en/docs/install)
Carry out load and functional testing of network equipment using Sprint and Xinertel test suites;Test graphical (WEB) and text (CLI) interface of network equipment; Our expectations for the candidate:Knowledge in telecommunications and networks (TCP/IP stack, switching, routing)Knowledge of testing theory;

For iOS development:
- [Xcode 14.0+](https://developer.apple.com/xcode/)
- iOS15.2+ simulator (iPhone 14 recommended)
- [CocoaPods](https://guides.cocoapods.org/using/getting-started.html)
- [make](https://www.gnu.org/software/make/)
High learning ability and susceptibility to new things;English at the level of reading technical documentation; Higher technical education, possibly final year students.

For Android development:
- [Android Studio](https://developer.android.com/studio)
- x86_64 Android emulator running Android 30+ (Pixel 5 running S recommended)
- [Android NDK](https://developer.android.com/ndk)
- [Java 8](https://www.java.com/en/download)
- [Java JDK 17](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html) (JDK 19 will not work with React Native)

## Installation

### React Native

With `npm`:

```
npm install --save @coinbase/waas-sdk-react-native
```

With `yarn`:

```
yarn add @coinbase/waas-sdk-react-native
```

### Android

In your Android application's `settings.gradle` file, make sure to add the following:

```gradle

include ":android-native", ":android-native:go-internal-sdk", ":android-native:mpc-sdk"

project(':android-native').projectDir = new File(rootProject.projectDir, '../node_modules/@coinbase/waas-sdk-react-native/android-native')
project(':android-native:mpc-sdk').projectDir = new File(rootProject.projectDir, '../node_modules/@coinbase/waas-sdk-react-native/android-native/mpc-sdk')
project(':android-native:go-internal-sdk').projectDir = new File(rootProject.projectDir, '../node_modules/@coinbase/waas-sdk-react-native/android-native/go-internal-sdk')
```

## Usage

See [index.tsx](./src/index.tsx) for the list of supported APIs.

## Example App

This repository provides an example app that demonstrates how the APIs should be used.

> NOTE: An example Cloud API Key json file is at `example/src/.coinbase_cloud_api_key.json`
> To run the example app, populate, or replace, this file with the Cloud API Key file provided to you
> by Coinbase.

### iOS
Ensure you have XCode open and run the following from the root directory of the repository:

```bash
yarn bootstrap # Install packages for the root and /example directories
yarn example start # Start the Metro server
yarn example ios --simulator "iPhone 14" # Build and start the app on iOS simulator
```

> *NOTE:* To build an app that depends on the WaaS SDK, you'll also need a compatible version of OpenSSL.
> You can build the OpenSSL framework by running the following on your Mac from the root of this repository:
>
> `yarn ssl-ios`
>
> You can alternatively depend on an open-compiled version of OpenSSL, like [OpenSSL-Universal](https://cocoapods.org/pods/OpenSSL-Universal), by adding the following to your app's Podfile:
>
> `pod "OpenSSL-Universal"`

### Android
Ensure you have the following [Android environment variables](https://developer.android.com/studio/command-line/variables) set correctly:

- `ANDROID_HOME`
- `ANDROID_SDK_ROOT="${ANDROID_HOME}"`
- `ANDROID_NDK_HOME="${ANDROID_HOME}/ndk/<insert ndk version>"`
- `ANDROID_NDK_ROOT="${ANDROID_NDK_HOME}"`

And then export the following to your `PATH`:

`export PATH="${ANDROID_HOME}/emulator:${ANDROID_HOME}/cmdline-tools/latest/bin:${ANDROID_HOME}/tools:${ANDROID_HOME}/tools/bin:${ANDROID_HOME}/platform-tools:${PATH}"`


Run the following from the root directory of the repository:

```bash
yarn install # Install packages for the root directory
emulator -avd Pixel_5_API_31 # Use any x86_64 emulator with min SDK version: 30.
yarn example start # Start the Metro server
yarn example android # Build and start the app on Android emulator
```

## Recommended Architecture

Broadly speaking, there are two possible approaches to using the WaaS SDK:

1. Use the WaaS backends directly for all calls.
2. Use the WaaS backends directly only for MPC operations; proxy all other calls through an intermediate server.

Of these two approaches, we recommend approach #2, as outlined in the following diagram:

![Recommended Set-up](./assets/diagram.png)

The motivation for placing a proxy server in between your application and the WaaS backends are as
follows:

1. Your proxy server can log API calls and collect metrics.
2. Your proxy server can filter results as it sees fit (e.g. policy enforcement).
3. Your proxy server can perform end user authentication.
4. Your proxy server can store the Coinbase API Key / Secret, rather than it being exposed to the client.
5. Your proxy server can throttle traffic.

In short, having a proxy server that you control in between your application and the WaaS backends will
afford you significantly more control than using the WaaS backends directly in most cases.

The methods from the WaaS SDK which are _required_ to be used for participation in MPC are:
1. `initMPCSdk`
2. `bootstrapDevice`
3. `getRegistrationData`
4. `computeMPCOperation`

# Native Waas SDK

We expose a Java 8+, `java.util.concurrent.Future`-based SDK for use with Java/Kotlin. An example
app is included in `android-native-example/` for more information.

## Requirements

- Java 8+
- Gradle 7.*
- If using central gradle repositories, you may need to update your `settings.gradle` to not fail on project repos.
- i.e (`repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)`)

## Installation
To begin, place the `android-native` directory relative to your project.

In your `settings.gradle`, include the following:

```
include ':android-native', ':android-native:mpc-sdk', ':android-native:go-internal-sdk'
project(':android-native').projectDir = new File(rootProject.projectDir, '../android-native')
project(':android-native:mpc-sdk').projectDir = new File(rootProject.projectDir, '../android-native/mpc-sdk')
project(':android-native:go-internal-sdk').projectDir = new File(rootProject.projectDir, '../android-native/go-internal-sdk')
```

Remember to specify the correct relative-location of `android-native`.

In your `build.gradle`, you should now take dependencies on

```
implementation project(":android-native")
implementation project(':android-native:mpc-sdk')
implementation project(':android-native:go-internal-sdk')
```

## Demo App
A demo app of the native SDK is included in `android-native/`. Opening this directory with Android Studio should be
sufficient to build and run the app.

## Considerations

- The SDK should import cleanly into Kotlin as-is -- the sample app includes a demonstration of utilizing Waas's Futures
with Kotlin task-closures. Please reach out with any questions.
We offer:Work in the office 5/2 (m.Avis motorways), the beginning of the working day is flexible (from 08:00 to 11:00 you can start working);
The level of income based on the results of the interview and based on the wishes of the candidate;
Bonuses for closing the stages of projects and the projects themselves;
Registration in accordance with the Labor Code of the Russian Federation;
Accreditation of an IT company with a deferment from military service;
VHI, corporate discounts for a subscription to a fitness club.
Contacts can be contacted:
Fomina Ekaterina
+7 (915) 742-47-71
TG: @kate_4mina
Email: [email protected]