TypeScript library for using Haveno
Go to file
2021-11-13 08:33:07 -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 automatically create and fund funding wallet 2021-11-13 08:33:07 -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 rename to HavenoDaemon.ts and HavenoDaemon.test.ts 2021-11-11 16:20:27 -05:00
package.json rename to HavenoDaemon.ts and HavenoDaemon.test.ts 2021-11-11 16:20:27 -05:00
README.md automatically create and fund funding wallet 2021-11-13 08:33:07 -05:00
tsconfig.json rename to HavenoDaemon.ts and HavenoDaemon.test.ts 2021-11-11 16:20:27 -05: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. In a new terminal, start envoy with the config in haveno-ui-poc/config/envoy.yaml (change absolute path for your system): 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. cd haveno-ui-poc
  5. npm install
  6. npm start to open http://localhost:3000 in a browser
  7. 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. In a new terminal, start envoy with the config in haveno-ui-poc/config/envoy.test.yaml (change absolute path for your system): 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. In a new terminal, start an instance of monero-wallet-rpc at port 38084. This wallet will be automatically funded in order to fund Alice and Bob during the tests.
    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
  5. cd haveno-ui-poc
  6. npm install
  7. Modify test config as needed in HavenoDaemon.test.ts.
    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.
  8. 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