diff --git a/.idea/tornado-subgraph.iml b/.idea/tornado-subgraph.iml
index 0c8867d..10840bb 100644
--- a/.idea/tornado-subgraph.iml
+++ b/.idea/tornado-subgraph.iml
@@ -5,6 +5,7 @@
+
diff --git a/build/Echoer/Echoer.wasm b/build/Echoer/Echoer.wasm
index 84a39d8..50619a5 100644
Binary files a/build/Echoer/Echoer.wasm and b/build/Echoer/Echoer.wasm differ
diff --git a/build/subgraph.yaml b/build/subgraph.yaml
index c8ae49d..4b20e25 100644
--- a/build/subgraph.yaml
+++ b/build/subgraph.yaml
@@ -1,21 +1,41 @@
specVersion: 0.0.2
-description: Instance
+description: Proxy
repository: https://github.com/tornadocash/tornado-subgraph
schema:
file: schema.graphql
dataSources:
- kind: ethereum/contract
- name: Instance
+ name: Echoer
network: bsc
source:
- address: "0x0Ce22770451A8acAD1220D9d1678656b4fAe4a1d"
- abi: Instance
- startBlock: 7942402
+ address: "0x0D5550d52428E7e3175bfc9550207e4ad3859b17"
+ abi: Echoer
+ startBlock: 8158799
mapping:
kind: ethereum/events
apiVersion: 0.0.4
language: wasm/assemblyscript
- file: Instance/Instance.wasm
+ file: Echoer/Echoer.wasm
+ entities:
+ - NoteAccount
+ abis:
+ - name: Echoer
+ file: abis/Echoer.json
+ eventHandlers:
+ - event: Echo(indexed address,bytes)
+ handler: handleEcho
+ - kind: ethereum/contract
+ name: Instance-0.1-bnb
+ network: bsc
+ source:
+ address: "0x84443CFd09A48AF6eF360C6976C5392aC5023a1F"
+ abi: Instance
+ startBlock: 8159279
+ mapping:
+ kind: ethereum/events
+ apiVersion: 0.0.4
+ language: wasm/assemblyscript
+ file: Instance-0.1-bnb/Instance-0.1-bnb.wasm
entities:
- Deposit
- Withdrawal
@@ -27,3 +47,92 @@ dataSources:
handler: handleDeposit
- event: Withdrawal(address,bytes32,indexed address,uint256)
handler: handleWithdrawal
+ - kind: ethereum/contract
+ name: Instance-1-bnb
+ network: bsc
+ source:
+ address: "0xd47438C816c9E7f2E2888E060936a499Af9582b3"
+ abi: Instance
+ startBlock: 8159286
+ mapping:
+ kind: ethereum/events
+ apiVersion: 0.0.4
+ language: wasm/assemblyscript
+ file: Instance-0.1-bnb/Instance-0.1-bnb.wasm
+ entities:
+ - Deposit
+ - Withdrawal
+ abis:
+ - name: Instance
+ file: abis/Instance.json
+ eventHandlers:
+ - event: Deposit(indexed bytes32,uint32,uint256)
+ handler: handleDeposit
+ - event: Withdrawal(address,bytes32,indexed address,uint256)
+ handler: handleWithdrawal
+ - kind: ethereum/contract
+ name: Instance-10-bnb
+ network: bsc
+ source:
+ address: "0x330bdFADE01eE9bF63C209Ee33102DD334618e0a"
+ abi: Instance
+ startBlock: 8159290
+ mapping:
+ kind: ethereum/events
+ apiVersion: 0.0.4
+ language: wasm/assemblyscript
+ file: Instance-0.1-bnb/Instance-0.1-bnb.wasm
+ entities:
+ - Deposit
+ - Withdrawal
+ abis:
+ - name: Instance
+ file: abis/Instance.json
+ eventHandlers:
+ - event: Deposit(indexed bytes32,uint32,uint256)
+ handler: handleDeposit
+ - event: Withdrawal(address,bytes32,indexed address,uint256)
+ handler: handleWithdrawal
+ - kind: ethereum/contract
+ name: Instance-100-bnb
+ network: bsc
+ source:
+ address: "0x1E34A77868E19A6647b1f2F47B51ed72dEDE95DD"
+ abi: Instance
+ startBlock: 8159296
+ mapping:
+ kind: ethereum/events
+ apiVersion: 0.0.4
+ language: wasm/assemblyscript
+ file: Instance-0.1-bnb/Instance-0.1-bnb.wasm
+ entities:
+ - Deposit
+ - Withdrawal
+ abis:
+ - name: Instance
+ file: abis/Instance.json
+ eventHandlers:
+ - event: Deposit(indexed bytes32,uint32,uint256)
+ handler: handleDeposit
+ - event: Withdrawal(address,bytes32,indexed address,uint256)
+ handler: handleWithdrawal
+ - kind: ethereum/contract
+ name: Proxy
+ network: bsc
+ source:
+ address: "0x0D5550d52428E7e3175bfc9550207e4ad3859b17"
+ abi: Proxy
+ startBlock: 7941563
+ mapping:
+ kind: ethereum/events
+ apiVersion: 0.0.4
+ language: wasm/assemblyscript
+ file: Proxy/Proxy.wasm
+ entities:
+ - EncryptedNote
+ abis:
+ - name: Proxy
+ file: abis/Proxy.json
+ eventHandlers:
+ - event: EncryptedNote(indexed address,bytes)
+ handler: handleEncryptedNote
diff --git a/create-yaml-file.js b/create-yaml-file.js
index a2b84ac..b0f6e0f 100644
--- a/create-yaml-file.js
+++ b/create-yaml-file.js
@@ -6,28 +6,45 @@ const program = require('commander');
program
.command('create-yaml')
.description('Creates yaml files using the mustache templating engine')
- .option(
- '-s, --subgraph ',
- 'the subgraph for which you are creating the yaml file. Currently only "proxy", "instance" and "echoer" are supported',
- )
.option(
'-e, --env ',
'defaults to "bsc" and uses the bsc start blocks config. Must set to "goerli" to use test start blocks config',
'bsc',
)
- .action(async ({ subgraph, env }) => {
+ .action(async ({ env }) => {
const baseIndexPath = path.join(__dirname, 'mustache', 'templates', 'base', 'index.js');
- const specificIndexPath = path.join(__dirname, 'mustache', 'templates', subgraph, 'index.js');
- const dataSourcesPath = path.join(__dirname, 'mustache', 'templates', subgraph, 'create-yaml.js');
- const subgraphDataSourcesData = require(dataSourcesPath);
- const dataSourcesData = [...subgraphDataSourcesData.createYaml(env)];
+ const echoerIndexPath = path.join(__dirname, 'mustache', 'templates', 'echoer', 'index.js');
+ const dataEchoerSourcesPath = path.join(__dirname, 'mustache', 'templates', 'echoer', 'create-yaml.js');
+
+ const instancesIndexPath = path.join(__dirname, 'mustache', 'templates', 'instance', 'index.js');
+ const dataInstancesSourcesPath = path.join(__dirname, 'mustache', 'templates', 'instance', 'create-yaml.js');
+
+ const proxyIndexPath = path.join(__dirname, 'mustache', 'templates', 'proxy', 'index.js');
+ const dataProxySourcesPath = path.join(__dirname, 'mustache', 'templates', 'proxy', 'create-yaml.js');
+
+ const echoerDataSourcesData = require(dataEchoerSourcesPath);
+ const instancesDataSourcesData = require(dataInstancesSourcesPath);
+ const proxyDataSourcesData = require(dataProxySourcesPath);
+
+ const dataSourcesData = [
+ ...echoerDataSourcesData.createYaml(env),
+ ...instancesDataSourcesData.createYaml(env),
+ ...proxyDataSourcesData.createYaml(env),
+ ];
const indexData = require(baseIndexPath);
- const specificIndexData = require(specificIndexPath);
+ const specificEchoerIndexData = require(echoerIndexPath);
+ const specificInstancesIndexData = require(instancesIndexPath);
+ const specificProxyIndexData = require(proxyIndexPath);
- indexData.yaml[0] = { ...indexData.yaml[0], ...specificIndexData };
+ indexData.yaml[0] = {
+ ...indexData.yaml[0],
+ ...specificEchoerIndexData,
+ ...specificInstancesIndexData,
+ ...specificProxyIndexData,
+ };
indexData.yaml[0].dataSources = dataSourcesData;
return console.log(JSON.stringify(indexData, null, 2) + '\n');
diff --git a/generated/Echoer/Echoer.ts b/generated/Echoer/Echoer.ts
index 55e9e8a..3ffdc4f 100644
--- a/generated/Echoer/Echoer.ts
+++ b/generated/Echoer/Echoer.ts
@@ -1,6 +1,14 @@
// THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-import { ethereum, JSONValue, TypedMap, Entity, Bytes, Address, BigInt } from '@graphprotocol/graph-ts';
+import {
+ ethereum,
+ JSONValue,
+ TypedMap,
+ Entity,
+ Bytes,
+ Address,
+ BigInt
+} from "@graphprotocol/graph-ts";
export class Echo extends ethereum.Event {
get params(): Echo__Params {
@@ -26,6 +34,6 @@ export class Echo__Params {
export class Echoer extends ethereum.SmartContract {
static bind(address: Address): Echoer {
- return new Echoer('Echoer', address);
+ return new Echoer("Echoer", address);
}
}
diff --git a/generated/Proxy/Proxy.ts b/generated/Proxy/Proxy.ts
index 3b78e70..7700179 100644
--- a/generated/Proxy/Proxy.ts
+++ b/generated/Proxy/Proxy.ts
@@ -1,6 +1,14 @@
// THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-import { ethereum, JSONValue, TypedMap, Entity, Bytes, Address, BigInt } from '@graphprotocol/graph-ts';
+import {
+ ethereum,
+ JSONValue,
+ TypedMap,
+ Entity,
+ Bytes,
+ Address,
+ BigInt
+} from "@graphprotocol/graph-ts";
export class EncryptedNote extends ethereum.Event {
get params(): EncryptedNote__Params {
@@ -26,6 +34,6 @@ export class EncryptedNote__Params {
export class Proxy extends ethereum.SmartContract {
static bind(address: Address): Proxy {
- return new Proxy('Proxy', address);
+ return new Proxy("Proxy", address);
}
}
diff --git a/generated/schema.ts b/generated/schema.ts
index 0d64fad..75c95b2 100644
--- a/generated/schema.ts
+++ b/generated/schema.ts
@@ -1,333 +1,344 @@
// THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-import { TypedMap, Entity, Value, ValueKind, store, Address, Bytes, BigInt, BigDecimal } from '@graphprotocol/graph-ts';
+import {
+ TypedMap,
+ Entity,
+ Value,
+ ValueKind,
+ store,
+ Address,
+ Bytes,
+ BigInt,
+ BigDecimal
+} from "@graphprotocol/graph-ts";
export class Deposit extends Entity {
constructor(id: string) {
super();
- this.set('id', Value.fromString(id));
+ this.set("id", Value.fromString(id));
}
save(): void {
- let id = this.get('id');
- assert(id !== null, 'Cannot save Deposit entity without an ID');
+ let id = this.get("id");
+ assert(id !== null, "Cannot save Deposit entity without an ID");
assert(
id.kind == ValueKind.STRING,
- 'Cannot save Deposit entity with non-string ID. ' + 'Considering using .toHex() to convert the "id" to a string.',
+ "Cannot save Deposit entity with non-string ID. " +
+ 'Considering using .toHex() to convert the "id" to a string.'
);
- store.set('Deposit', id.toString(), this);
+ store.set("Deposit", id.toString(), this);
}
static load(id: string): Deposit | null {
- return store.get('Deposit', id) as Deposit | null;
+ return store.get("Deposit", id) as Deposit | null;
}
get id(): string {
- let value = this.get('id');
+ let value = this.get("id");
return value.toString();
}
set id(value: string) {
- this.set('id', Value.fromString(value));
+ this.set("id", Value.fromString(value));
}
get index(): BigInt {
- let value = this.get('index');
+ let value = this.get("index");
return value.toBigInt();
}
set index(value: BigInt) {
- this.set('index', Value.fromBigInt(value));
+ this.set("index", Value.fromBigInt(value));
}
get amount(): string {
- let value = this.get('amount');
+ let value = this.get("amount");
return value.toString();
}
set amount(value: string) {
- this.set('amount', Value.fromString(value));
+ this.set("amount", Value.fromString(value));
}
get currency(): string {
- let value = this.get('currency');
+ let value = this.get("currency");
return value.toString();
}
set currency(value: string) {
- this.set('currency', Value.fromString(value));
+ this.set("currency", Value.fromString(value));
}
get commitment(): Bytes {
- let value = this.get('commitment');
+ let value = this.get("commitment");
return value.toBytes();
}
set commitment(value: Bytes) {
- this.set('commitment', Value.fromBytes(value));
+ this.set("commitment", Value.fromBytes(value));
}
get timestamp(): BigInt {
- let value = this.get('timestamp');
+ let value = this.get("timestamp");
return value.toBigInt();
}
set timestamp(value: BigInt) {
- this.set('timestamp', Value.fromBigInt(value));
+ this.set("timestamp", Value.fromBigInt(value));
}
get blockNumber(): BigInt {
- let value = this.get('blockNumber');
+ let value = this.get("blockNumber");
return value.toBigInt();
}
set blockNumber(value: BigInt) {
- this.set('blockNumber', Value.fromBigInt(value));
+ this.set("blockNumber", Value.fromBigInt(value));
}
get transactionHash(): Bytes {
- let value = this.get('transactionHash');
+ let value = this.get("transactionHash");
return value.toBytes();
}
set transactionHash(value: Bytes) {
- this.set('transactionHash', Value.fromBytes(value));
+ this.set("transactionHash", Value.fromBytes(value));
}
}
export class Withdrawal extends Entity {
constructor(id: string) {
super();
- this.set('id', Value.fromString(id));
+ this.set("id", Value.fromString(id));
}
save(): void {
- let id = this.get('id');
- assert(id !== null, 'Cannot save Withdrawal entity without an ID');
+ let id = this.get("id");
+ assert(id !== null, "Cannot save Withdrawal entity without an ID");
assert(
id.kind == ValueKind.STRING,
- 'Cannot save Withdrawal entity with non-string ID. ' +
- 'Considering using .toHex() to convert the "id" to a string.',
+ "Cannot save Withdrawal entity with non-string ID. " +
+ 'Considering using .toHex() to convert the "id" to a string.'
);
- store.set('Withdrawal', id.toString(), this);
+ store.set("Withdrawal", id.toString(), this);
}
static load(id: string): Withdrawal | null {
- return store.get('Withdrawal', id) as Withdrawal | null;
+ return store.get("Withdrawal", id) as Withdrawal | null;
}
get id(): string {
- let value = this.get('id');
+ let value = this.get("id");
return value.toString();
}
set id(value: string) {
- this.set('id', Value.fromString(value));
+ this.set("id", Value.fromString(value));
}
get to(): Bytes {
- let value = this.get('to');
+ let value = this.get("to");
return value.toBytes();
}
set to(value: Bytes) {
- this.set('to', Value.fromBytes(value));
+ this.set("to", Value.fromBytes(value));
}
get fee(): BigInt {
- let value = this.get('fee');
+ let value = this.get("fee");
return value.toBigInt();
}
set fee(value: BigInt) {
- this.set('fee', Value.fromBigInt(value));
+ this.set("fee", Value.fromBigInt(value));
}
get index(): BigInt {
- let value = this.get('index');
+ let value = this.get("index");
return value.toBigInt();
}
set index(value: BigInt) {
- this.set('index', Value.fromBigInt(value));
+ this.set("index", Value.fromBigInt(value));
}
get amount(): string {
- let value = this.get('amount');
+ let value = this.get("amount");
return value.toString();
}
set amount(value: string) {
- this.set('amount', Value.fromString(value));
+ this.set("amount", Value.fromString(value));
}
get currency(): string {
- let value = this.get('currency');
+ let value = this.get("currency");
return value.toString();
}
set currency(value: string) {
- this.set('currency', Value.fromString(value));
+ this.set("currency", Value.fromString(value));
}
get nullifier(): Bytes {
- let value = this.get('nullifier');
+ let value = this.get("nullifier");
return value.toBytes();
}
set nullifier(value: Bytes) {
- this.set('nullifier', Value.fromBytes(value));
+ this.set("nullifier", Value.fromBytes(value));
}
get timestamp(): BigInt {
- let value = this.get('timestamp');
+ let value = this.get("timestamp");
return value.toBigInt();
}
set timestamp(value: BigInt) {
- this.set('timestamp', Value.fromBigInt(value));
+ this.set("timestamp", Value.fromBigInt(value));
}
get blockNumber(): BigInt {
- let value = this.get('blockNumber');
+ let value = this.get("blockNumber");
return value.toBigInt();
}
set blockNumber(value: BigInt) {
- this.set('blockNumber', Value.fromBigInt(value));
+ this.set("blockNumber", Value.fromBigInt(value));
}
get transactionHash(): Bytes {
- let value = this.get('transactionHash');
+ let value = this.get("transactionHash");
return value.toBytes();
}
set transactionHash(value: Bytes) {
- this.set('transactionHash', Value.fromBytes(value));
+ this.set("transactionHash", Value.fromBytes(value));
}
}
export class EncryptedNote extends Entity {
constructor(id: string) {
super();
- this.set('id', Value.fromString(id));
+ this.set("id", Value.fromString(id));
}
save(): void {
- let id = this.get('id');
- assert(id !== null, 'Cannot save EncryptedNote entity without an ID');
+ let id = this.get("id");
+ assert(id !== null, "Cannot save EncryptedNote entity without an ID");
assert(
id.kind == ValueKind.STRING,
- 'Cannot save EncryptedNote entity with non-string ID. ' +
- 'Considering using .toHex() to convert the "id" to a string.',
+ "Cannot save EncryptedNote entity with non-string ID. " +
+ 'Considering using .toHex() to convert the "id" to a string.'
);
- store.set('EncryptedNote', id.toString(), this);
+ store.set("EncryptedNote", id.toString(), this);
}
static load(id: string): EncryptedNote | null {
- return store.get('EncryptedNote', id) as EncryptedNote | null;
+ return store.get("EncryptedNote", id) as EncryptedNote | null;
}
get id(): string {
- let value = this.get('id');
+ let value = this.get("id");
return value.toString();
}
set id(value: string) {
- this.set('id', Value.fromString(value));
+ this.set("id", Value.fromString(value));
}
get index(): BigInt {
- let value = this.get('index');
+ let value = this.get("index");
return value.toBigInt();
}
set index(value: BigInt) {
- this.set('index', Value.fromBigInt(value));
+ this.set("index", Value.fromBigInt(value));
}
get blockNumber(): BigInt {
- let value = this.get('blockNumber');
+ let value = this.get("blockNumber");
return value.toBigInt();
}
set blockNumber(value: BigInt) {
- this.set('blockNumber', Value.fromBigInt(value));
+ this.set("blockNumber", Value.fromBigInt(value));
}
get encryptedNote(): Bytes {
- let value = this.get('encryptedNote');
+ let value = this.get("encryptedNote");
return value.toBytes();
}
set encryptedNote(value: Bytes) {
- this.set('encryptedNote', Value.fromBytes(value));
+ this.set("encryptedNote", Value.fromBytes(value));
}
get transactionHash(): Bytes {
- let value = this.get('transactionHash');
+ let value = this.get("transactionHash");
return value.toBytes();
}
set transactionHash(value: Bytes) {
- this.set('transactionHash', Value.fromBytes(value));
+ this.set("transactionHash", Value.fromBytes(value));
}
}
export class NoteAccount extends Entity {
constructor(id: string) {
super();
- this.set('id', Value.fromString(id));
+ this.set("id", Value.fromString(id));
}
save(): void {
- let id = this.get('id');
- assert(id !== null, 'Cannot save NoteAccount entity without an ID');
+ let id = this.get("id");
+ assert(id !== null, "Cannot save NoteAccount entity without an ID");
assert(
id.kind == ValueKind.STRING,
- 'Cannot save NoteAccount entity with non-string ID. ' +
- 'Considering using .toHex() to convert the "id" to a string.',
+ "Cannot save NoteAccount entity with non-string ID. " +
+ 'Considering using .toHex() to convert the "id" to a string.'
);
- store.set('NoteAccount', id.toString(), this);
+ store.set("NoteAccount", id.toString(), this);
}
static load(id: string): NoteAccount | null {
- return store.get('NoteAccount', id) as NoteAccount | null;
+ return store.get("NoteAccount", id) as NoteAccount | null;
}
get id(): string {
- let value = this.get('id');
+ let value = this.get("id");
return value.toString();
}
set id(value: string) {
- this.set('id', Value.fromString(value));
+ this.set("id", Value.fromString(value));
}
get index(): BigInt {
- let value = this.get('index');
+ let value = this.get("index");
return value.toBigInt();
}
set index(value: BigInt) {
- this.set('index', Value.fromBigInt(value));
+ this.set("index", Value.fromBigInt(value));
}
get address(): Bytes {
- let value = this.get('address');
+ let value = this.get("address");
return value.toBytes();
}
set address(value: Bytes) {
- this.set('address', Value.fromBytes(value));
+ this.set("address", Value.fromBytes(value));
}
get encryptedAccount(): Bytes {
- let value = this.get('encryptedAccount');
+ let value = this.get("encryptedAccount");
return value.toBytes();
}
set encryptedAccount(value: Bytes) {
- this.set('encryptedAccount', Value.fromBytes(value));
+ this.set("encryptedAccount", Value.fromBytes(value));
}
}
diff --git a/mustache/bsc.js b/mustache/bsc.js
deleted file mode 100644
index edf163c..0000000
--- a/mustache/bsc.js
+++ /dev/null
@@ -1,88 +0,0 @@
-module.exports = {
- base: {
- specVersion: '0.0.2',
- description: '',
- repository: 'https://github.com/tornadocash/bsc-tornado-subgraph',
- network: 'bsc',
- },
- dataSources: [
- {
- name: 'Instance',
- network: 'bsc',
- dataSourceKind: 'ethereum/contract',
- address: '0x5D595DB16eb6d074E0e7E7f0bE37E7e75f23BEc7',
- abi: 'Instance',
- startBlock: 7941563,
- mapping: {
- kind: 'ethereum/events',
- apiVersion: '0.0.4',
- language: 'wasm/assemblyscript',
- entities: ['Deposit', 'Withdrawal'],
- abis: {
- name: 'Instance',
- file: './abis/Instance.json',
- },
- eventHandlers: [
- {
- event: 'Deposit(indexed bytes32,uint32,uint256)',
- handler: 'handleDeposit',
- },
- {
- event: 'Withdrawal(address,bytes32,indexed address,uint256)',
- handler: 'handleWithdrawal',
- },
- ],
- file: './src/mapping-proxy.ts',
- },
- },
- {
- name: 'Echoer',
- network: 'bsc',
- dataSourceKind: 'ethereum/contract',
- address: '0x60eaCBd5535ADB86955A0154E44Aded78F161643',
- abi: 'Echoer',
- startBlock: 7941563,
- mapping: {
- kind: 'ethereum/events',
- apiVersion: '0.0.4',
- language: 'wasm/assemblyscript',
- entities: ['NoteAccount'],
- abis: {
- name: 'Echoer',
- file: './abis/Echoer.json',
- },
- eventHandlers: [
- {
- event: 'Echo(indexed address,bytes)',
- handler: 'handleEcho',
- },
- ],
- file: './src/mapping-echo-account.ts',
- },
- },
- {
- name: 'Proxy',
- dataSourceKind: 'ethereum/contract',
- address: '0x0Ce22770451A8acAD1220D9d1678656b4fAe4a1d',
- abi: 'Proxy',
- startBlock: 7941563,
- mapping: {
- kind: 'ethereum/events',
- apiVersion: '0.0.4',
- language: 'wasm/assemblyscript',
- entities: ['EncryptedNote'],
- abis: {
- name: 'Proxy',
- file: './abis/Proxy.json',
- },
- eventHandlers: [
- {
- event: 'EncryptedNote(indexed address,bytes)',
- handler: 'handleEncryptedNote',
- },
- ],
- file: './src/mapping-encrypted-note.ts',
- },
- },
- ],
-};
diff --git a/mustache/templates/echoer/contracts.js b/mustache/templates/echoer/contracts.js
new file mode 100644
index 0000000..4cc7e6b
--- /dev/null
+++ b/mustache/templates/echoer/contracts.js
@@ -0,0 +1,10 @@
+const contracts = [
+ {
+ prod: 8158799,
+ network: 'bsc',
+ name: 'Echoer',
+ address: '0x0D5550d52428E7e3175bfc9550207e4ad3859b17',
+ },
+];
+
+module.exports = contracts;
diff --git a/mustache/templates/echoer/create-yaml.js b/mustache/templates/echoer/create-yaml.js
new file mode 100644
index 0000000..eeb976b
--- /dev/null
+++ b/mustache/templates/echoer/create-yaml.js
@@ -0,0 +1,34 @@
+const Contracts = require('./contracts');
+
+module.exports = {
+ createYaml: (env) => {
+ const createEchoerBlock = ({ name, network, startBlocks, address }) => ({
+ name,
+ network,
+ mappingFile: '../src/mapping-echo-account.ts',
+ startBlock: startBlocks.prod,
+ address: `"${address}"`,
+ abi: 'Echoer',
+ entities: ['NoteAccount'],
+ abis: [
+ {
+ name: 'Echoer',
+ path: '../abis/Echoer.json',
+ },
+ ],
+ events: [
+ {
+ event: 'Echo(indexed address,bytes)',
+ handler: 'handleEcho',
+ },
+ ],
+ });
+
+ return Contracts.map(({ prod, name, network, address }) => {
+ const startBlocks = { prod };
+ if (network === env) {
+ return createEchoerBlock({ name, startBlocks, network, address });
+ }
+ }).filter((e) => e !== undefined);
+ },
+};
diff --git a/mustache/templates/echoer/index.js b/mustache/templates/echoer/index.js
new file mode 100644
index 0000000..3a53e18
--- /dev/null
+++ b/mustache/templates/echoer/index.js
@@ -0,0 +1,4 @@
+module.exports = {
+ description: 'Echoer',
+ schemaFile: '../schema.graphql',
+};
diff --git a/mustache/templates/instance/contracts.js b/mustache/templates/instance/contracts.js
index 63706a7..d88831a 100644
--- a/mustache/templates/instance/contracts.js
+++ b/mustache/templates/instance/contracts.js
@@ -1,11 +1,35 @@
const contracts = [
{
- prod: 7942402,
+ prod: 8159279,
amount: '0.1',
network: 'bsc',
- currency: 'bsc',
+ currency: 'bnb',
name: 'Instance',
- address: '0x0Ce22770451A8acAD1220D9d1678656b4fAe4a1d',
+ address: '0x84443CFd09A48AF6eF360C6976C5392aC5023a1F',
+ },
+ {
+ prod: 8159286,
+ amount: '1',
+ network: 'bsc',
+ currency: 'bnb',
+ name: 'Instance',
+ address: '0xd47438C816c9E7f2E2888E060936a499Af9582b3',
+ },
+ {
+ prod: 8159290,
+ amount: '10',
+ network: 'bsc',
+ currency: 'bnb',
+ name: 'Instance',
+ address: '0x330bdFADE01eE9bF63C209Ee33102DD334618e0a',
+ },
+ {
+ prod: 8159296,
+ amount: '100',
+ network: 'bsc',
+ currency: 'bnb',
+ name: 'Instance',
+ address: '0x1E34A77868E19A6647b1f2F47B51ed72dEDE95DD',
},
];
diff --git a/mustache/templates/instance/create-yaml.js b/mustache/templates/instance/create-yaml.js
index f238a22..276685c 100644
--- a/mustache/templates/instance/create-yaml.js
+++ b/mustache/templates/instance/create-yaml.js
@@ -5,12 +5,12 @@ const Contracts = require('./contracts');
module.exports = {
createYaml: (env) => {
- const createInstanceBlock = ({ name, network, startBlocks, address }) => ({
- name,
+ const createInstanceBlock = ({ name, amount, currency, network, startBlocks, address }) => ({
+ name: `${name}-${amount}-${currency}`,
network,
mappingFile: '../src/mapping-instance.ts',
startBlock: startBlocks.prod,
- address,
+ address: `"${address}"`,
abi: 'Instance',
entities: ['Deposit', 'Withdrawal'],
abis: [
@@ -39,7 +39,7 @@ module.exports = {
Contracts.forEach(({ address, name, amount, currency }) => {
if (address != null) {
- contractsToInstancesContent += `contractsToInstances.set(${address.toLowerCase()},${space}//${space}${name}-${currency}-${amount}${newLine}${doubleSpace}"${amount}${'-'}${currency}"${newLine});${newLine}`;
+ contractsToInstancesContent += `contractsToInstances.set("${address.toLowerCase()}",${space}//${space}${name}-${currency}-${amount}${newLine}${doubleSpace}"${amount}${'-'}${currency}"${newLine});${newLine}`;
}
});
@@ -47,10 +47,10 @@ module.exports = {
const targetFile = path.join(__dirname, '../../../src/', 'contractsToInstances.ts');
fs.writeFileSync(targetFile, contractsToInstancesContent, 'utf8');
- return Contracts.map(({ prod, name, network, address }) => {
+ return Contracts.map(({ prod, name, amount, currency, network, address }) => {
const startBlocks = { prod };
if (network === env) {
- return createInstanceBlock({ name, startBlocks, network, address });
+ return createInstanceBlock({ name, startBlocks, amount, currency, network, address });
}
}).filter((e) => e !== undefined);
},
diff --git a/mustache/templates/proxy/contracts.js b/mustache/templates/proxy/contracts.js
index 66ccd04..2d5db9a 100644
--- a/mustache/templates/proxy/contracts.js
+++ b/mustache/templates/proxy/contracts.js
@@ -1,9 +1,9 @@
const contracts = [
{
- prod: 7942402,
+ prod: 8158799,
name: 'Proxy',
network: 'bsc',
- address: '0x5D595DB16eb6d074E0e7E7f0bE37E7e75f23BEc7',
+ address: '0x0D5550d52428E7e3175bfc9550207e4ad3859b17',
},
];
diff --git a/mustache/templates/proxy/create-yaml.js b/mustache/templates/proxy/create-yaml.js
index 7e7a990..79c9430 100644
--- a/mustache/templates/proxy/create-yaml.js
+++ b/mustache/templates/proxy/create-yaml.js
@@ -8,7 +8,7 @@ module.exports = {
mappingFile: '../src/mapping-encrypted-note.ts',
abi: 'Proxy',
startBlock: 7941563,
- address,
+ address: `"${address}"`,
entities: ['EncryptedNote'],
abis: [
{
diff --git a/package.json b/package.json
index 6c684c9..3e9c9be 100644
--- a/package.json
+++ b/package.json
@@ -3,17 +3,14 @@
"license": "UNLICENSED",
"scripts": {
"lint": "eslint .",
- "yaml:proxy": "node ./create-yaml-file create-yaml -s proxy -e bsc | mustache - mustache/yaml.mustache > subgraphs/proxy-tornado-subgraph.yaml",
- "yaml:instance": "node ./create-yaml-file create-yaml -s instance -e bsc | mustache - mustache/yaml.mustache > subgraphs/instance-tornado-subgraph.yaml",
+ "generate": "yarn codegen:tornado && yarn build:tornado",
+ "yaml:tornado": "node ./create-yaml-file create-yaml -e bsc | mustache - mustache/yaml.mustache > subgraphs/tornado-subgraph.yaml",
"codegen": "graph codegen",
- "codegen:proxy": "yarn yaml:proxy && yarn codegen -- subgraphs/proxy-tornado-subgraph.yaml",
- "codegen:instance": "yarn yaml:instance && yarn codegen -- subgraphs/instance-tornado-subgraph.yaml",
+ "codegen:tornado": "yarn yaml:tornado && yarn codegen -- subgraphs/tornado-subgraph.yaml",
"build": "graph build",
- "build:proxy": "graph build subgraphs/proxy-tornado-subgraph.yaml",
- "build:instance": "graph build subgraphs/instance-tornado-subgraph.yaml",
+ "build:tornado": "graph build subgraphs/tornado-subgraph.yaml",
"deploy": "graph deploy --node https://api.thegraph.com/deploy/ --ipfs https://api.thegraph.com/ipfs/ tornadocash/bsc-tornado-subgraph",
- "deploy:proxy": "yarn deploy -- tornadocash/bsc-tornado-subgraph ubgraphs/proxy-tornado-subgraph.yaml",
- "deploy:instance": "yarn deploy -- tornadocash/bsc-tornado-subgraph subgraphs/instance-tornado-subgraph.yaml"
+ "deploy:tornado": "yarn deploy -- tornadocash/bsc-tornado-subgraph subgraphs/tornado-subgraph.yaml"
},
"dependencies": {
"@graphprotocol/graph-cli": "0.20.0",
diff --git a/src/contractsToInstances.ts b/src/contractsToInstances.ts
index c037fda..a48e41b 100644
--- a/src/contractsToInstances.ts
+++ b/src/contractsToInstances.ts
@@ -1,7 +1,19 @@
// this is a read only file generated by manual inputs to file mustache/templates/rates/contracts.js.
export let contractsToInstances = new Map();
contractsToInstances.set(
- '0x0ce22770451a8acad1220d9d1678656b4fae4a1d', // Instance-bsc-0.1
- '0.1-bsc',
+ '0x84443cfd09a48af6ef360c6976c5392ac5023a1f', // Instance-bnb-0.1
+ '0.1-bnb',
+);
+contractsToInstances.set(
+ '0xd47438c816c9e7f2e2888e060936a499af9582b3', // Instance-bnb-1
+ '1-bnb',
+);
+contractsToInstances.set(
+ '0x330bdfade01ee9bf63c209ee33102dd334618e0a', // Instance-bnb-10
+ '10-bnb',
+);
+contractsToInstances.set(
+ '0x1e34a77868e19a6647b1f2f47b51ed72dede95dd', // Instance-bnb-100
+ '100-bnb',
);
// this is a read only file generated by manual inputs to file mustache/templates/rates/contracts.js.
diff --git a/subgraph.yaml b/subgraph.yaml
index 824e67c..7b35600 100644
--- a/subgraph.yaml
+++ b/subgraph.yaml
@@ -6,7 +6,7 @@ dataSources:
name: Proxy
network: bsc
source:
- address: "0x5D595DB16eb6d074E0e7E7f0bE37E7e75f23BEc7"
+ address: "0x0D5550d52428E7e3175bfc9550207e4ad3859b17"
abi: Proxy
startBlock: 7941563
mapping:
diff --git a/subgraphs/instance-tornado-subgraph.yaml b/subgraphs/instance-tornado-subgraph.yaml
deleted file mode 100644
index 4330534..0000000
--- a/subgraphs/instance-tornado-subgraph.yaml
+++ /dev/null
@@ -1,29 +0,0 @@
- specVersion: 0.0.2
- description: Instance
- repository: https://github.com/tornadocash/tornado-subgraph
- schema:
- file: ../schema.graphql
- dataSources:
- - kind: ethereum/contract
- name: Instance
- network: bsc
- source:
- address: '0x0Ce22770451A8acAD1220D9d1678656b4fAe4a1d'
- abi: Instance
- startBlock: 7942402
- mapping:
- kind: ethereum/events
- apiVersion: 0.0.4
- language: wasm/assemblyscript
- file: ../src/mapping-instance.ts
- entities:
- - Deposit
- - Withdrawal
- abis:
- - name: Instance
- file: ../abis/Instance.json
- eventHandlers:
- - event: Deposit(indexed bytes32,uint32,uint256)
- handler: handleDeposit
- - event: Withdrawal(address,bytes32,indexed address,uint256)
- handler: handleWithdrawal
diff --git a/subgraphs/proxy-tornado-subgraph.yaml b/subgraphs/proxy-tornado-subgraph.yaml
deleted file mode 100644
index b7c4310..0000000
--- a/subgraphs/proxy-tornado-subgraph.yaml
+++ /dev/null
@@ -1,26 +0,0 @@
- specVersion: 0.0.2
- description: Proxy
- repository: https://github.com/Synthetixio/synthetix-subgraph
- schema:
- file: ../schema.graphql
- dataSources:
- - kind: ethereum/contract
- name: Proxy
- network: bsc
- source:
- address: '0x5D595DB16eb6d074E0e7E7f0bE37E7e75f23BEc7'
- abi: Proxy
- startBlock: 7941563
- mapping:
- kind: ethereum/events
- apiVersion: 0.0.4
- language: wasm/assemblyscript
- file: ../src/mapping-encrypted-note.ts
- entities:
- - EncryptedNote
- abis:
- - name: Proxy
- file: ../abis/Proxy.json
- eventHandlers:
- - event: EncryptedNote(indexed address,bytes)
- handler: handleEncryptedNote
diff --git a/subgraphs/tornado-subgraph.yaml b/subgraphs/tornado-subgraph.yaml
new file mode 100644
index 0000000..257c28c
--- /dev/null
+++ b/subgraphs/tornado-subgraph.yaml
@@ -0,0 +1,138 @@
+ specVersion: 0.0.2
+ description: Proxy
+ repository: https://github.com/tornadocash/tornado-subgraph
+ schema:
+ file: ../schema.graphql
+ dataSources:
+ - kind: ethereum/contract
+ name: Echoer
+ network: bsc
+ source:
+ address: "0x0D5550d52428E7e3175bfc9550207e4ad3859b17"
+ abi: Echoer
+ startBlock: 8158799
+ mapping:
+ kind: ethereum/events
+ apiVersion: 0.0.4
+ language: wasm/assemblyscript
+ file: ../src/mapping-echo-account.ts
+ entities:
+ - NoteAccount
+ abis:
+ - name: Echoer
+ file: ../abis/Echoer.json
+ eventHandlers:
+ - event: Echo(indexed address,bytes)
+ handler: handleEcho
+ - kind: ethereum/contract
+ name: Instance-0.1-bnb
+ network: bsc
+ source:
+ address: "0x84443CFd09A48AF6eF360C6976C5392aC5023a1F"
+ abi: Instance
+ startBlock: 8159279
+ mapping:
+ kind: ethereum/events
+ apiVersion: 0.0.4
+ language: wasm/assemblyscript
+ file: ../src/mapping-instance.ts
+ entities:
+ - Deposit
+ - Withdrawal
+ abis:
+ - name: Instance
+ file: ../abis/Instance.json
+ eventHandlers:
+ - event: Deposit(indexed bytes32,uint32,uint256)
+ handler: handleDeposit
+ - event: Withdrawal(address,bytes32,indexed address,uint256)
+ handler: handleWithdrawal
+ - kind: ethereum/contract
+ name: Instance-1-bnb
+ network: bsc
+ source:
+ address: "0xd47438C816c9E7f2E2888E060936a499Af9582b3"
+ abi: Instance
+ startBlock: 8159286
+ mapping:
+ kind: ethereum/events
+ apiVersion: 0.0.4
+ language: wasm/assemblyscript
+ file: ../src/mapping-instance.ts
+ entities:
+ - Deposit
+ - Withdrawal
+ abis:
+ - name: Instance
+ file: ../abis/Instance.json
+ eventHandlers:
+ - event: Deposit(indexed bytes32,uint32,uint256)
+ handler: handleDeposit
+ - event: Withdrawal(address,bytes32,indexed address,uint256)
+ handler: handleWithdrawal
+ - kind: ethereum/contract
+ name: Instance-10-bnb
+ network: bsc
+ source:
+ address: "0x330bdFADE01eE9bF63C209Ee33102DD334618e0a"
+ abi: Instance
+ startBlock: 8159290
+ mapping:
+ kind: ethereum/events
+ apiVersion: 0.0.4
+ language: wasm/assemblyscript
+ file: ../src/mapping-instance.ts
+ entities:
+ - Deposit
+ - Withdrawal
+ abis:
+ - name: Instance
+ file: ../abis/Instance.json
+ eventHandlers:
+ - event: Deposit(indexed bytes32,uint32,uint256)
+ handler: handleDeposit
+ - event: Withdrawal(address,bytes32,indexed address,uint256)
+ handler: handleWithdrawal
+ - kind: ethereum/contract
+ name: Instance-100-bnb
+ network: bsc
+ source:
+ address: "0x1E34A77868E19A6647b1f2F47B51ed72dEDE95DD"
+ abi: Instance
+ startBlock: 8159296
+ mapping:
+ kind: ethereum/events
+ apiVersion: 0.0.4
+ language: wasm/assemblyscript
+ file: ../src/mapping-instance.ts
+ entities:
+ - Deposit
+ - Withdrawal
+ abis:
+ - name: Instance
+ file: ../abis/Instance.json
+ eventHandlers:
+ - event: Deposit(indexed bytes32,uint32,uint256)
+ handler: handleDeposit
+ - event: Withdrawal(address,bytes32,indexed address,uint256)
+ handler: handleWithdrawal
+ - kind: ethereum/contract
+ name: Proxy
+ network: bsc
+ source:
+ address: "0x0D5550d52428E7e3175bfc9550207e4ad3859b17"
+ abi: Proxy
+ startBlock: 7941563
+ mapping:
+ kind: ethereum/events
+ apiVersion: 0.0.4
+ language: wasm/assemblyscript
+ file: ../src/mapping-encrypted-note.ts
+ entities:
+ - EncryptedNote
+ abis:
+ - name: Proxy
+ file: ../abis/Proxy.json
+ eventHandlers:
+ - event: EncryptedNote(indexed address,bytes)
+ handler: handleEncryptedNote