TypeScript library for using Haveno
Go to file
2021-11-11 13:56:03 -05:00
.github add .github/CODEOWNERS (#24) 2021-11-09 07:57:57 -05:00
bin use underscores in grpc.proto for correct camelcase in grpc-web 2021-09-16 09:32:17 -04:00
config update after removing dao, tests passing 2021-10-22 07:45:14 -04:00
public update logo (#5) 2021-09-09 04:54:14 -04:00
src fix typo (#26) 2021-11-10 17:47:30 -05:00
.gitignore Initialize project using Create React App 2021-04-21 15:52:40 -04:00
.project fetch and display haveno daemon version in react 2021-04-25 19:58:26 -04:00
haveno-ui-poc.png update poc image and test (#7) 2021-09-10 06:43:16 -04:00
LICENSE change license to apache 2.0 (#6) 2021-09-10 06:43:06 -04:00
package-lock.json update to monero-javascript 0.5.6 for TaskLooper util & jest worker fix 2021-09-21 10:01:44 -04:00
package.json update to monero-javascript 0.5.6 for TaskLooper util & jest worker fix 2021-09-21 10:01:44 -04:00
README.md envoy config supports linux by adding parameter 2021-11-11 13:56:03 -05:00
tsconfig.json fix error resulting from using typescript 2021-04-25 20:05:28 -04:00

Haveno UI Proof of Concept

A proof of concept to fetch and render data from Haveno's daemon in ReactJS.

This application is a lightly modified create-react-app with typescript using envoy proxy and grpc-web to use Haveno's gRPC API.

Run in a Browser

  1. Run a local Haveno test network, running Alice as a daemon with make alice-daemon.
  2. git clone https://github.com/haveno-dex/haveno-ui-poc
  3. Start envoy with the config in ./config/envoy.yaml
    Example: docker run --rm --add-host host.docker.internal:host-gateway -it -v ~/git/haveno-ui-poc/config/envoy.yaml:/envoy.yaml -p 8080:8080 envoyproxy/envoy-dev:8a2143613d43d17d1eb35a24b4a4a4c432215606 -c /envoy.yaml
  4. npm install
  5. npm start to open http://localhost:3000 in a browser
  6. Confirm that the Haveno daemon version is displayed (1.6.2)


Run Tests

Running the top-level API tests is a great way to develop and test Haveno end-to-end.

HavenoDaemon provides the interface to the Haveno daemon's gRPC API.

  1. Run a local Haveno test network, running Alice and Bob as daemons with make alice-daemon and make bob-daemon.
  2. git clone https://github.com/haveno-dex/haveno-ui-poc
  3. Start envoy with the test config in ./config/envoy.test.yaml.
    Example: docker run --rm --add-host host.docker.internal:host-gateway -it -v ~/git/haveno-ui-poc/config/envoy.test.yaml:/envoy.test.yaml -p 8080:8080 -p 8081:8081 envoyproxy/envoy-dev:8a2143613d43d17d1eb35a24b4a4a4c432215606 -c /envoy.test.yaml
  4. npm install
  5. Start and fund an instance of monero-wallet-rpc at port 38084. This wallet will be used to fund the test instances of Alice and Bob.
    For example: cd ~/git/haveno/.localnet/ && ./monero-wallet-rpc --daemon-address http://localhost:38081 --daemon-login superuser:abctesting123 --stagenet --rpc-bind-port 38084 --rpc-login rpc_user:abc123 --wallet-dir ./ --rpc-access-control-origins http://localhost:8080
  6. Modify test config as needed in HavenoDaemon.test.tsx.
    The tests need to know the port of Alice's wallet, which is printed to Alice's console. Currently the port needs to be manually copied to the test configuration.
  7. npm test to run all tests or npm run test -- -t 'my test' to run tests by name.

How to Update the Protobuf Client

If the protobuf definitions in haveno-dex/haveno are updated, the typescript imports must be regenerated:

  1. Copy grpc.proto and pb.proto from Haveno's protobuf definitions to ./config.
  2. Install protobuf for your system, e.g. on mac: brew install protobuf
  3. ./bin/build_protobuf.sh