Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: vea sdk published
Browse files Browse the repository at this point in the history
jaybuidl committed May 29, 2023

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
1 parent 260c8ae commit fef03a3
Showing 14 changed files with 90 additions and 155 deletions.
2 changes: 1 addition & 1 deletion contracts/scripts/publish.sh
Original file line number Diff line number Diff line change
@@ -23,7 +23,7 @@ trap _finally EXIT
yarn version $1

mkdir dist
cp -pr README.md deployments src/ dist/
cp -pr README.md deployments typechain-types src/ dist/
rm -rf dist/test
jq 'del(.scripts.prepare)' package.json > dist/package.json

15 changes: 4 additions & 11 deletions validator-cli/package.json
Original file line number Diff line number Diff line change
@@ -10,25 +10,18 @@
"yarn": "3.3.1"
},
"scripts": {
"start": "NODE_NO_WARNINGS=1 NODE_OPTIONS=--experimental-fetch ts-node ./src/ArbToEth/index.ts",
"pm2:start": "pm2 start 'yarn start' --name watcher --cron '*/10 * * * *' --no-autorestart",
"start-chiado-devnet": "NODE_NO_WARNINGS=1 NODE_OPTIONS=--experimental-fetch ts-node ./src/devnet/arbToChiado/happyPath.ts",
"start-goerli-devnet": "NODE_NO_WARNINGS=1 NODE_OPTIONS=--experimental-fetch ts-node ./src/devnet/arbToGoerli/happyPath.ts"
"start": "npx ts-node ./src/ArbToEth/watcher.ts",
"start-chiado-devnet": "npx ts-node ./src/devnet/arbToChiado/happyPath.ts",
"start-goerli-devnet": "npx ts-node ./src/devnet/arbToGoerli/happyPath.ts"
},
"dependencies": {
"@arbitrum/sdk": "^3.1.2",
"@kleros/vea-contracts": "workspace:^",
"@logtail/pino": "^0.4.0",
"@typechain/ethers-v5": "^10.2.0",
"dotenv": "^16.0.3",
"pino": "^8.14.1",
"pino-pretty": "^10.0.0",
"pm2": "^5.2.2",
"typescript": "^4.9.5",
"web3": "^1.10.0",
"web3-batched-send": "^1.0.3"
},
"devDependencies": {
"ts-node": "^10.9.1",
"typescript": "^4.9.5"
}
}
7 changes: 0 additions & 7 deletions validator-cli/src/ArbToEth/index.ts

This file was deleted.

59 changes: 23 additions & 36 deletions validator-cli/src/ArbToEth/watcher.ts
Original file line number Diff line number Diff line change
@@ -1,59 +1,49 @@
import { getVeaOutboxArbToEthProvider, getVeaInboxArbToEth } from "../utils/ethers";
import { JsonRpcProvider } from "@ethersproject/providers";
import { arbToEthDevnet, IBridge } from "../utils/contracts";
import envVar from "../utils/envVar";
import baseLogger from "../utils/logger";

require("dotenv").config();

const watch = async () => {
const bridge: IBridge = arbToEthDevnet;
const logger = baseLogger.child({
bridge: bridge.label,
inbox: bridge.inboxAddress,
outbox: bridge.outboxAddress,
});
logger.info("Watching for claims...");
logger.debug("Inbox RPC: %s", bridge.inboxRpc);
logger.debug("Outbox RPC: %s", bridge.outboxRpc);
const l1provider = new JsonRpcProvider(process.env.RPC_VEAOUTBOX);

const privateKey = envVar("PRIVATE_KEY");
const rpcProviderOutbox = new JsonRpcProvider(bridge.outboxRpc);
const veaOutbox = getVeaOutboxArbToEthProvider(bridge.outboxAddress, privateKey, rpcProviderOutbox);
const veaInbox = getVeaInboxArbToEth(bridge.inboxAddress, privateKey, bridge.inboxRpc);
const veaOutbox = getVeaOutboxArbToEthProvider(process.env.VEAOUTBOX_ADDRESS, process.env.PRIVATE_KEY, l1provider);

const veaInbox = getVeaInboxArbToEth(process.env.VEAINBOX_ADDRESS, process.env.PRIVATE_KEY, process.env.RPC_VEAINBOX);

const deposit = await veaOutbox.deposit();
const epochPeriod = (await veaOutbox.epochPeriod()).toNumber();
const claimDelay = (await veaOutbox.claimDelay()).toNumber();
const challengePeriod = (await veaOutbox.challengePeriod()).toNumber();

const currentBlockNumber = await rpcProviderOutbox.getBlockNumber();
const challengeableTimeStart = Math.floor(Date.now() / 1000) - challengePeriod;
const challengeableBlockStart = currentBlockNumber - Math.ceil((challengePeriod * 2) / 12);
const currentBlockNumber = await l1provider.getBlockNumber();
const challengableTimeStart = Math.floor(Date.now() / 1000) - challengePeriod;
const challengableBlockStart = currentBlockNumber - Math.ceil((challengePeriod * 2) / 12);

const logs = await rpcProviderOutbox.getLogs({
address: bridge.outboxAddress,
const logs = await l1provider.getLogs({
address: process.env.VEAOUTBOX_ADDRESS,
topics: veaOutbox.filters.Claimed(null, null).topics,
fromBlock: challengeableBlockStart,
fromBlock: challengableBlockStart,
});
logger.info("Claim events found: %d", logs.length);

for (var log of logs) {
const claimedTimestamp = (await rpcProviderOutbox.getBlock(log.blockNumber)).timestamp;
logger.info({
for (let i = 0; i < logs.length; i++) {
const log = logs[i];
const claimedTimestamp = (await l1provider.getBlock(log.blockNumber)).timestamp;
console.log({
stateRoot: log.data,
claimer: "0x" + log.topics[1].substring(26),
timestamp: claimedTimestamp,
blocknumber: log.blockNumber,
honest: "0",
challenger: "0x0000000000000000000000000000000000000000",
});
if (claimedTimestamp < challengeableTimeStart) {
if (claimedTimestamp < challengableTimeStart) {
continue;
} else {
const claimedStateRoot = log.data;
const claimedEpoch = Math.floor((claimedTimestamp - claimDelay) / epochPeriod);
const inboxStateRoot = await veaInbox.snapshots(claimedEpoch);
if (claimedStateRoot !== inboxStateRoot) {
logger.warn(`Challenging claim ${claimedStateRoot} at epoch ${claimedEpoch}.`);
console.log(`Challenging claim ${claimedStateRoot} at epoch ${claimedEpoch}.`);
const unchallengedClaim = {
stateRoot: claimedStateRoot,
claimer: "0x" + log.topics[1].substring(26),
@@ -64,20 +54,17 @@ const watch = async () => {
};
const unchallengedClaimHash = await veaOutbox.hashClaim(unchallengedClaim);
const claimHash = await veaOutbox.claimHashes(claimedEpoch);
logger.warn(unchallengedClaim);
logger.warn(unchallengedClaimHash);
logger.warn(claimHash);
logger.warn(claimedEpoch);
console.log(unchallengedClaim);
console.log(unchallengedClaimHash);
console.log(claimHash);
console.log(claimedEpoch);
if (unchallengedClaimHash == claimHash) {
const txn = await veaOutbox.challenge(claimedEpoch, unchallengedClaim, { value: deposit });
logger.warn(`Challenge Txn: ${txn.hash}`);
console.log(`Challenge Txn: ${txn.hash}`);
}
}
}
}

// TODO: make this env var optional, skip fetch if undefined
fetch(envVar("HEARTBEAT_URL"));
};

export default watch;
Empty file removed validator-cli/src/index.ts
Empty file.
31 changes: 0 additions & 31 deletions validator-cli/src/utils/contracts.ts

This file was deleted.

16 changes: 0 additions & 16 deletions validator-cli/src/utils/envVar.ts

This file was deleted.

28 changes: 0 additions & 28 deletions validator-cli/src/utils/logger.ts

This file was deleted.

11 changes: 0 additions & 11 deletions validator-cli/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,15 +1,4 @@
{
"compilerOptions": {
"target": "es2021",
"module": "commonjs",
"strict": true,
"esModuleInterop": true,
"outDir": "dist",
"declaration": true,
"sourceMap": true,
"noImplicitAny": false,
"resolveJsonModule": true
},
"include": [
"src"
]
3 changes: 3 additions & 0 deletions vea-sdk/.npmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
scripts
tsconfig.json
.env*
32 changes: 30 additions & 2 deletions vea-sdk/README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,31 @@
# Vea SDK
# Vea SDK <a href="https://www.npmjs.com/package/@kleros/vea-sdk"><img alt="npm" src="https://img.shields.io/npm/v/@kleros/vea-sdk?color=lightgrey"></a>

Something useful
This package facilitates the interactions with the Vea protocol.

## Getting Started

```bash
yarn add @kleros/vea-sdk
# or
npm install @kleros/vea-sdk
```

## Example

```typescript
import { Wallet } from "@ethersproject/wallet";
import VeaSdk from "../src/index";
import envVar from "../src/utils/envVar";

// Create the Vea client
const vea = VeaSdk.ClientFactory.arbitrumGoerliToChiadoDevnet(envVar("RPC_ARB_GOERLI"), envVar("RPC_CHIADO"));

// Get the message info
const messageId = 42;
const messageInfo = await vea.getMessageInfo(messageId);

// Relay the message
const privateKey = envVar("PRIVATE_KEY");
const wallet = new Wallet(privateKey, vea.outboxProvider);
await vea.relay(messageInfo, wallet);
```
22 changes: 17 additions & 5 deletions vea-sdk/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
{
"name": "@kleros/vea-sdk",
"version": "0.1.14",
"version": "0.2.0",
"description": "SDK for the development of cross-chain apps on Vea",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"repository": {
"type": "git",
"url": "git+ssh://[email protected]/kleros/vea.git"
@@ -10,7 +12,7 @@
"bugs": {
"url": "https://github.com/kleros/vea/issues"
},
"homepage": "https://github.com/kleros/vea#readme",
"homepage": "https://vea.ninja",
"license": "MIT",
"packageManager": "[email protected]",
"engines": {
@@ -25,10 +27,15 @@
"tag": "latest"
},
"scripts": {
"start": "NODE_NO_WARNINGS=1 NODE_OPTIONS=--experimental-fetch ts-node ./src/run.ts"
"start": "NODE_NO_WARNINGS=1 NODE_OPTIONS=--experimental-fetch ts-node ./src/run.ts",
"release:patch": "yarn version patch && yarn npm publish",
"release:minor": "yarn version minor && yarn npm publish",
"release:major": "yarn version major && yarn npm publish",
"clean": "rm -rf dist",
"prepublish": "yarn tsc || echo"
},
"dependencies": {
"@kleros/vea-contracts": "workspace:^",
"@kleros/vea-contracts": "workspace:^0.2.1",
"@logtail/pino": "^0.4.0",
"@typechain/ethers-v5": "^10.2.0",
"dotenv": "^16.0.3",
@@ -42,5 +49,10 @@
"devDependencies": {
"ts-node": "^10.9.1",
"typescript": "^4.9.5"
}
},
"files": [
"dist",
"src",
"examples"
]
}
11 changes: 10 additions & 1 deletion vea-sdk/tsconfig.json
Original file line number Diff line number Diff line change
@@ -8,9 +8,18 @@
"declaration": true,
"sourceMap": true,
"noImplicitAny": false,
"resolveJsonModule": true
"resolveJsonModule": true,
"paths": {
"@kleros/vea-contracts": [
"../contracts"
]
}
},
"include": [
"src"
],
"exclude": [
"node_modules",
"dist"
]
}
8 changes: 2 additions & 6 deletions yarn.lock
Original file line number Diff line number Diff line change
@@ -3357,7 +3357,7 @@ __metadata:
languageName: node
linkType: hard

"@kleros/vea-contracts@workspace:^, @kleros/vea-contracts@workspace:contracts":
"@kleros/vea-contracts@workspace:^, @kleros/vea-contracts@workspace:^0.2.1, @kleros/vea-contracts@workspace:contracts":
version: 0.0.0-use.local
resolution: "@kleros/vea-contracts@workspace:contracts"
dependencies:
@@ -3425,7 +3425,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "@kleros/vea-sdk@workspace:vea-sdk"
dependencies:
"@kleros/vea-contracts": "workspace:^"
"@kleros/vea-contracts": "workspace:^0.2.1"
"@logtail/pino": ^0.4.0
"@typechain/ethers-v5": ^10.2.0
dotenv: ^16.0.3
@@ -3446,13 +3446,9 @@ __metadata:
dependencies:
"@arbitrum/sdk": ^3.1.2
"@kleros/vea-contracts": "workspace:^"
"@logtail/pino": ^0.4.0
"@typechain/ethers-v5": ^10.2.0
dotenv: ^16.0.3
pino: ^8.14.1
pino-pretty: ^10.0.0
pm2: ^5.2.2
ts-node: ^10.9.1
typescript: ^4.9.5
web3: ^1.10.0
web3-batched-send: ^1.0.3

0 comments on commit fef03a3

Please sign in to comment.