Archived
Merge branch 'main' into dboreham/add-console
Former-commit-id: 62d2d37417
This commit is contained in:
@@ -10,6 +10,30 @@ Clone required repositories:
|
||||
laconic-so --stack mobymask-v2 setup-repositories
|
||||
```
|
||||
|
||||
Checkout to the required versions and branches in repos
|
||||
|
||||
```bash
|
||||
# watcher-ts
|
||||
cd ~/cerc/watcher-ts
|
||||
git checkout v0.2.31
|
||||
|
||||
# react-peer
|
||||
cd ~/cerc/react-peer
|
||||
git checkout v0.2.29
|
||||
|
||||
# mobymask-ui
|
||||
cd ~/cerc/mobymask-ui
|
||||
git checkout laconic
|
||||
|
||||
# laconicd
|
||||
cd ~/cerc/laconicd
|
||||
git checkout v0.8.0
|
||||
|
||||
# MobyMask
|
||||
cd ~/cerc/MobyMask
|
||||
git checkout v0.1.1
|
||||
```
|
||||
|
||||
Build the container images:
|
||||
|
||||
```bash
|
||||
@@ -20,25 +44,75 @@ This should create the required docker images in the local image registry.
|
||||
|
||||
Deploy the stack:
|
||||
|
||||
```bash
|
||||
laconic-so --stack mobymask-v2 deploy-system up
|
||||
```
|
||||
* Deploy the laconic chain
|
||||
|
||||
```bash
|
||||
laconic-so --stack mobymask-v2 deploy-system --include mobymask-laconicd up
|
||||
```
|
||||
|
||||
* Check that laconic chain status is healthy
|
||||
|
||||
```bash
|
||||
docker ps
|
||||
```
|
||||
|
||||
* Export the private key from laconicd
|
||||
|
||||
```bash
|
||||
laconic-so --stack mobymask-v2 deploy-system --include mobymask-laconicd exec laconicd "echo y | laconicd keys export mykey --unarmored-hex --unsafe"
|
||||
```
|
||||
|
||||
* Set the private key in [secrets.json](../../config/watcher-mobymask-v2/secrets.json) file that will be used by mobymask container to deploy contract
|
||||
|
||||
* Create a new account
|
||||
|
||||
```bash
|
||||
laconic-so --stack mobymask-v2 deploy-system --include mobymask-laconicd exec laconicd "laconicd keys add alice"
|
||||
```
|
||||
|
||||
* Transfer balance to new account
|
||||
|
||||
```bash
|
||||
laconic-so --stack mobymask-v2 deploy-system --include mobymask-laconicd exec laconicd 'laconicd tx bank send $(laconicd keys show mykey -a) $(laconicd keys show alice -a) 1000000000000000000000000aphoton --fees 2000aphoton'
|
||||
```
|
||||
|
||||
* Export the private key of new account from laconicd
|
||||
|
||||
```bash
|
||||
laconic-so --stack mobymask-v2 deploy-system --include mobymask-laconicd exec laconicd "echo y | laconicd keys export alice --unarmored-hex --unsafe"
|
||||
```
|
||||
|
||||
* Set the private key (`PRIVATE_KEY`) in [peer-start.sh](../../config/watcher-mobymask-v2/peer-start.sh) file that will be used to start the peer that sends txs to L2 chain
|
||||
|
||||
* Deploy the other containers
|
||||
|
||||
```bash
|
||||
laconic-so --stack mobymask-v2 deploy-system --include watcher-mobymask-v2 up
|
||||
```
|
||||
|
||||
* Check that all containers are healthy using `docker ps`
|
||||
|
||||
NOTE: The `mobymask-ui` container might not start. If mobymask-app is not running at http://localhost:3002, run command again to start the container
|
||||
|
||||
```bash
|
||||
laconic-so --stack mobymask-v2 deploy-system --include watcher-mobymask-v2 up
|
||||
```
|
||||
|
||||
## Tests
|
||||
|
||||
Find the watcher container's id:
|
||||
|
||||
```bash
|
||||
docker ps | grep "cerc/watcher-mobymask-v2:local"
|
||||
laconic-so --stack mobymask-v2 deploy-system --include watcher-mobymask-v2 ps | grep "mobymask-watcher-server"
|
||||
```
|
||||
|
||||
Example output
|
||||
|
||||
```
|
||||
8b38e9a64d7e cerc/watcher-mobymask-v2:local "sh -c 'yarn server'" 35 seconds ago Up 14 seconds (health: starting) 0.0.0.0:3001->3001/tcp, 0.0.0.0:9001->9001/tcp, 0.0.0.0:9090->9090/tcp laconic-aeb84676de2b0a7671ae90d537fc7d26-mobymask-watcher-server-1
|
||||
id: 5d3aae4b22039fcd1c9b18feeb91318ede1100581e75bb5ac54f9e436066b02c, name: laconic-bfb01caf98b1b8f7c8db4d33f11b905a-mobymask-watcher-server-1, ports: 0.0.0.0:3001->3001/tcp, 0.0.0.0:9001->9001/tcp, 0.0.0.0:9090->9090/tcp
|
||||
```
|
||||
|
||||
In above output the container ID is `8b38e9a64d7e`
|
||||
In above output the container ID is `5d3aae4b22039fcd1c9b18feeb91318ede1100581e75bb5ac54f9e436066b02c`
|
||||
|
||||
Export it for later use:
|
||||
|
||||
@@ -52,10 +126,51 @@ Run the peer tests:
|
||||
docker exec -w /app/packages/peer $CONTAINER_ID yarn test
|
||||
```
|
||||
|
||||
## Web Apps
|
||||
|
||||
Check that the status for web-app containers are healthy by using `docker ps`
|
||||
|
||||
### mobymask-app
|
||||
|
||||
The mobymask-app should be running at http://localhost:3002
|
||||
|
||||
### peer-test-app
|
||||
|
||||
The peer-test-app should be running at http://localhost:3003
|
||||
|
||||
## Details
|
||||
|
||||
* The relay node for p2p network is running at http://localhost:9090
|
||||
|
||||
* The [peer package](https://github.com/cerc-io/watcher-ts/tree/main/packages/peer) (published in [gitea](https://git.vdb.to/cerc-io/-/packages/npm/@cerc-io%2Fpeer)) can be used in client code for connecting to the network
|
||||
|
||||
* The [react-peer package](https://github.com/cerc-io/react-peer/tree/main/packages/react-peer) (published in [gitea](https://git.vdb.to/cerc-io/-/packages/npm/@cerc-io%2Freact-peer)) which uses the peer package can be used in react app for connecting to the network
|
||||
|
||||
## Demo
|
||||
|
||||
Follow the [demo](./demo.md) to try out the MobyMask app with L2 chain
|
||||
|
||||
## Clean up
|
||||
|
||||
To stop all the services running in background run:
|
||||
Stop all the services running in background run:
|
||||
|
||||
```bash
|
||||
laconic-so --stack mobymask-v2 deploy-system down
|
||||
laconic-so --stack mobymask-v2 deploy-system --include watcher-mobymask-v2 down
|
||||
|
||||
laconic-so --stack mobymask-v2 deploy-system --include mobymask-laconicd down
|
||||
```
|
||||
|
||||
Clear volumes:
|
||||
|
||||
* List all volumes
|
||||
|
||||
```bash
|
||||
docker volume ls
|
||||
```
|
||||
|
||||
* Remove volumes created by this stack
|
||||
|
||||
Example:
|
||||
```bash
|
||||
docker volume rm laconic-bfb01caf98b1b8f7c8db4d33f11b905a_moby_data_server
|
||||
```
|
||||
|
||||
@@ -0,0 +1,130 @@
|
||||
# Demo
|
||||
|
||||
* Get the root invite link URL for mobymask-app
|
||||
|
||||
```
|
||||
laconic-so --stack mobymask-v2 deploy-system --include watcher-mobymask-v2 logs mobymask
|
||||
```
|
||||
|
||||
NOTE: Clear the browser cache (local storage) for http://127.0.0.1:3002 to remove old invitations
|
||||
|
||||
The invite link is seen at the end of the logs
|
||||
Example:
|
||||
```
|
||||
laconic-bfb01caf98b1b8f7c8db4d33f11b905a-mobymask-1 | http://127.0.0.1:3002/#/members?invitation=%7B%22v%22%3A1%2C%22signedDelegations%22%3A%5B%7B%22signature%22%3A%220x7559bd412f02677d60820e38243acf61547f79339395a34f7d4e1630e645aeb30535fc219f79b6fbd3af0ce3bd05132ad46d2b274a9fbc4c36bc71edd09850891b%22%2C%22delegation%22%3A%7B%22delegate%22%3A%220xc0838c92B2b71756E0eAD5B3C1e1F186baeEAAac%22%2C%22authority%22%3A%220x0000000000000000000000000000000000000000000000000000000000000000%22%2C%22caveats%22%3A%5B%7B%22enforcer%22%3A%220x558024C7d593B840E1BfD83E9B287a5CDad4db15%22%2C%22terms%22%3A%220x0000000000000000000000000000000000000000000000000000000000000000%22%7D%5D%7D%7D%5D%2C%22key%22%3A%220x98da9805821f1802196443e578fd32af567bababa0a249c07c82df01ecaa7d8d%22%7D
|
||||
```
|
||||
|
||||
* In the debug panel, check if it is connected to the p2p network (It should be connected to atleast one other peer for pubsub to work).
|
||||
|
||||
* Create an invite link in the app by clicking on `Create new invite link` button.
|
||||
|
||||
* Switch to the `MESSAGES` tab in debug panel for viewing incoming messages later.
|
||||
|
||||
* Open the invite link in a new browser with different profile (to simulate remote browser)
|
||||
* Check that it is connected to any other peer in the network.
|
||||
|
||||
* In `Report a phishing attempt` section, report multiple phishers using the `submit` button. Click on the `Submit batch to p2p network` button. This broadcasts signed invocations to the connected peers.
|
||||
|
||||
* In the `MESSAGES` tab of other browsers, a message can be seen with the signed invocations.
|
||||
|
||||
* In a terminal check logs from the watcher peer container.
|
||||
|
||||
* Get the container id
|
||||
|
||||
```bash
|
||||
laconic-so --stack mobymask-v2 deploy-system --include watcher-mobymask-v2 ps | grep mobymask-watcher-peer
|
||||
```
|
||||
|
||||
* Check logs
|
||||
|
||||
```bash
|
||||
docker logs -f CONTAINER_ID
|
||||
```
|
||||
|
||||
* It should have received the message, sent transaction to L2 chain and received a transaction receipt with block details.
|
||||
|
||||
Example log:
|
||||
|
||||
```
|
||||
2023-03-23T10:25:19.771Z vulcanize:peer-listener [10:25:19] Received a message on mobymask P2P network from peer: PeerId(12D3KooWAVNswtcrX12iDYukEoxdQwD34kJyRWcQTfZ4unGg2xjd)
|
||||
2023-03-23T10:25:24.143Z laconic:libp2p-utils Transaction receipt for invoke message {
|
||||
to: '0x558024C7d593B840E1BfD83E9B287a5CDad4db15',
|
||||
blockNumber: 1996,
|
||||
blockHash: '0xebef19c21269654804b2ef2d4bb5cb6c88743b37ed77e82222dc5671debf3afb',
|
||||
transactionHash: '0xf8c5a093a93f793012196073a7d0cb3ed6fbd2846126c066cb31c72100960cb1',
|
||||
effectiveGasPrice: '1500000007',
|
||||
gasUsed: '250000'
|
||||
}
|
||||
```
|
||||
|
||||
* Check the phisher in watcher GQL: http://localhost:3001/graphql
|
||||
* Use the blockHash from transaction receipt details or query for latest block
|
||||
|
||||
```gql
|
||||
query {
|
||||
latestBlock {
|
||||
hash
|
||||
number
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
* Get the deployed contract address
|
||||
|
||||
```bash
|
||||
laconic-so --stack mobymask-v2 deploy-system --include watcher-mobymask-v2 exec mobymask-app "cat src/config.json"
|
||||
```
|
||||
|
||||
The value of `address` field is the deployed contract address
|
||||
|
||||
* Check for phisher value
|
||||
|
||||
```gql
|
||||
query {
|
||||
isPhisher(
|
||||
blockHash: "TX_OR_LATEST_BLOCK_HASH",
|
||||
contractAddress: "CONTRACT_ADDRESS",
|
||||
# If reported phisher name was "test" then key0 value is "TWT:test"
|
||||
key0: "TWT:PHISHER_NAME"
|
||||
) {
|
||||
value
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
It should return true for reported phisher names.
|
||||
|
||||
* Watcher internally is using L2 chain `eth_getStorageAt` method.
|
||||
|
||||
* Check the phisher name in mobymask app in `Check Phisher Status` section.
|
||||
* Watcher GQL API is used for checking phisher.
|
||||
|
||||
* Manage the invitations by clicking on the `Outstanding Invitations in p2p network`.
|
||||
|
||||
* Revoke the created invitation by clicking on `Revoke (p2p network)`
|
||||
|
||||
* Revocation messages can be seen in the debug panel `MESSAGES` tab of other browsers.
|
||||
|
||||
* Check the watcher peer logs. It should receive a message and log the transaction receipt for revoke message.
|
||||
|
||||
* Try reporting a phisher from the revoked invitee's browser.
|
||||
|
||||
* The invocation message for reporting phisher would be broadcasted to all peers.
|
||||
|
||||
* Check the watcher peer logs. A transaction failed error should be logged.
|
||||
|
||||
* Check the reported phisher in [watcher GQL](https://localhost:3001/graphql)
|
||||
|
||||
```gql
|
||||
query {
|
||||
isPhisher(
|
||||
blockHash: "LATEST_BLOCK_HASH",
|
||||
contractAddress: "CONTRACT_ADDRESS",
|
||||
key0: "TWT:PHISHER_NAME"
|
||||
) {
|
||||
value
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
It should return false as the invitation/delegation used for reporting phishers has been revoked.
|
||||
@@ -4,8 +4,14 @@ repos:
|
||||
- cerc-io/watcher-ts
|
||||
- cerc-io/react-peer
|
||||
- cerc-io/mobymask-ui
|
||||
- cerc-io/laconicd
|
||||
- cerc-io/MobyMask
|
||||
containers:
|
||||
- cerc/watcher-mobymask-v2
|
||||
- cerc/react-peer
|
||||
- cerc/mobymask-ui
|
||||
- cerc/laconicd
|
||||
- cerc/mobymask
|
||||
pods:
|
||||
- mobymask-laconicd
|
||||
- watcher-mobymask-v2
|
||||
|
||||
Reference in New Issue
Block a user