mirror of
https://github.com/tornadocash/tornado-subgraph.git
synced 2024-12-23 01:39:39 +01:00
feat: generate proxy
This commit is contained in:
parent
a8ba9fe2cb
commit
7328da948f
38
create-yaml-file.js
Normal file
38
create-yaml-file.js
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const path = require('path');
|
||||||
|
const program = require('commander');
|
||||||
|
|
||||||
|
program
|
||||||
|
.command('create-yaml')
|
||||||
|
.description('Creates yaml files using the mustache templating engine')
|
||||||
|
.option(
|
||||||
|
'-s, --subgraph <value>',
|
||||||
|
'the subgraph for which you are creating the yaml file. Currently only "proxy", "instance" and "echoer" are supported',
|
||||||
|
)
|
||||||
|
.option(
|
||||||
|
'-e, --env <value>',
|
||||||
|
'defaults to "prod" and uses the prod start blocks config. Must set to "test" to use test start blocks config',
|
||||||
|
'prod',
|
||||||
|
)
|
||||||
|
.action(async ({ subgraph, 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 indexData = require(baseIndexPath);
|
||||||
|
|
||||||
|
const specificIndexData = require(specificIndexPath);
|
||||||
|
|
||||||
|
indexData.yaml[0] = { ...indexData.yaml[0], ...specificIndexData };
|
||||||
|
indexData.yaml[0].dataSources = dataSourcesData;
|
||||||
|
|
||||||
|
return console.log(JSON.stringify(indexData, null, 2) + '\n');
|
||||||
|
});
|
||||||
|
|
||||||
|
program.parse(process.argv);
|
@ -1,36 +0,0 @@
|
|||||||
{{#base}}
|
|
||||||
specVersion: {{specVersion}}
|
|
||||||
description: {{description}}
|
|
||||||
repository: {{&repository}}
|
|
||||||
schema:
|
|
||||||
file: {{&schemaFile}}
|
|
||||||
dataSources:
|
|
||||||
{{#dataSources}}
|
|
||||||
- kind: {{&dataSourceKind}}
|
|
||||||
name: {{name}}
|
|
||||||
network: {{network}}
|
|
||||||
source:
|
|
||||||
address: {{&address}}
|
|
||||||
abi: {{abi}}
|
|
||||||
startBlock: {{startBlock}}
|
|
||||||
mapping:
|
|
||||||
kind: {{&mapping.kind}}
|
|
||||||
apiVersion: {{mapping.version}}
|
|
||||||
language: {{&mapping.language}}
|
|
||||||
file: {{&mappingFile}}
|
|
||||||
entities:
|
|
||||||
{{#entities}}
|
|
||||||
- {{.}}
|
|
||||||
{{/entities}}
|
|
||||||
abis:
|
|
||||||
{{#abis}}
|
|
||||||
- name: {{name}}
|
|
||||||
file: {{&path}}
|
|
||||||
{{/abis}}
|
|
||||||
eventHandlers:
|
|
||||||
{{#events}}
|
|
||||||
- event: {{event}}
|
|
||||||
handler: {{handler}}
|
|
||||||
{{/events}}
|
|
||||||
{{/dataSources}}
|
|
||||||
{{/base}}
|
|
@ -5,16 +5,10 @@ const duplicateStartBlocks = {
|
|||||||
|
|
||||||
const contracts = [
|
const contracts = [
|
||||||
{
|
{
|
||||||
prod: 9715469,
|
prod: 7942402,
|
||||||
name: 'Proxy',
|
amount: '0.1',
|
||||||
exchanger: duplicateStartBlocks.one,
|
name: 'Instance',
|
||||||
address: "'0x565C9EB432f4AE9633e50e1213AB4f23D8f31f54'",
|
address: "'0x0Ce22770451A8acAD1220D9d1678656b4fAe4a1d'",
|
||||||
},
|
|
||||||
{
|
|
||||||
prod: 9715469,
|
|
||||||
name: 'Proxy',
|
|
||||||
exchanger: duplicateStartBlocks.one,
|
|
||||||
address: "'0x5D595DB16eb6d074E0e7E7f0bE37E7e75f23BEc7'",
|
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -5,10 +5,8 @@ const duplicateStartBlocks = {
|
|||||||
|
|
||||||
const contracts = [
|
const contracts = [
|
||||||
{
|
{
|
||||||
prod: 9715469,
|
prod: 7942402,
|
||||||
amount: '0.1',
|
name: 'Proxy',
|
||||||
name: 'Instance',
|
|
||||||
exchanger: duplicateStartBlocks.one,
|
|
||||||
address: "'0x5D595DB16eb6d074E0e7E7f0bE37E7e75f23BEc7'",
|
address: "'0x5D595DB16eb6d074E0e7E7f0bE37E7e75f23BEc7'",
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
@ -1,22 +1,19 @@
|
|||||||
const fs = require('fs');
|
|
||||||
const path = require('path');
|
|
||||||
|
|
||||||
const Contracts = require('./contracts');
|
const Contracts = require('./contracts');
|
||||||
const { createStartBlock } = require('../common');
|
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
createYaml: (env) => {
|
createYaml: (env) => {
|
||||||
|
|
||||||
const createProxyBlock = ({ name, startBlocks, address }) => ({
|
const createProxyBlock = ({ name, address }) => ({
|
||||||
name,
|
name,
|
||||||
mappingFile: '../src/mapping-encrypted-note.ts',
|
mappingFile: '../src/mapping-encrypted-note.ts',
|
||||||
startBlock: createStartBlock(startBlocks, env),
|
abi: 'Proxy',
|
||||||
|
startBlock: 7941563,
|
||||||
address,
|
address,
|
||||||
entities: ['EncryptedNote'],
|
entities: ['EncryptedNote'],
|
||||||
abis: [
|
abis: [
|
||||||
{
|
{
|
||||||
event: 'Proxy',
|
event: 'Proxy',
|
||||||
file: '../abis/Proxy.json'
|
path: '../abis/Proxy.json'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
events: [
|
events: [
|
||||||
@ -27,8 +24,8 @@ module.exports = {
|
|||||||
],
|
],
|
||||||
});
|
});
|
||||||
|
|
||||||
return Contracts.map(({ type, prod, test, name, address }) => {
|
return Contracts.map(({ prod, name, address }) => {
|
||||||
const startBlocks = { prod, test };
|
const startBlocks = { prod };
|
||||||
|
|
||||||
return createProxyBlock({ name, startBlocks, address })
|
return createProxyBlock({ name, startBlocks, address })
|
||||||
});
|
});
|
||||||
|
36
mustache/yaml.mustache
Normal file
36
mustache/yaml.mustache
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
{{#yaml}}
|
||||||
|
specVersion: {{specVersion}}
|
||||||
|
description: {{description}}
|
||||||
|
repository: {{&repository}}
|
||||||
|
schema:
|
||||||
|
file: {{&schemaFile}}
|
||||||
|
dataSources:
|
||||||
|
{{#dataSources}}
|
||||||
|
- kind: {{&dataSourceKind}}
|
||||||
|
name: {{name}}
|
||||||
|
network: {{network}}
|
||||||
|
source:
|
||||||
|
address: {{&address}}
|
||||||
|
abi: {{abi}}
|
||||||
|
startBlock: {{startBlock}}
|
||||||
|
mapping:
|
||||||
|
kind: {{&mapping.kind}}
|
||||||
|
apiVersion: {{mapping.version}}
|
||||||
|
language: {{&mapping.language}}
|
||||||
|
file: {{&mappingFile}}
|
||||||
|
entities:
|
||||||
|
{{#entities}}
|
||||||
|
- {{.}}
|
||||||
|
{{/entities}}
|
||||||
|
abis:
|
||||||
|
{{#abis}}
|
||||||
|
- name: {{name}}
|
||||||
|
file: {{&path}}
|
||||||
|
{{/abis}}
|
||||||
|
eventHandlers:
|
||||||
|
{{#events}}
|
||||||
|
- event: {{event}}
|
||||||
|
handler: {{handler}}
|
||||||
|
{{/events}}
|
||||||
|
{{/dataSources}}
|
||||||
|
{{/yaml}}
|
@ -4,10 +4,15 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"codegen": "graph codegen",
|
"codegen": "graph codegen",
|
||||||
"build": "graph build",
|
"build": "graph build",
|
||||||
|
"yaml:proxy": "node ./create-yaml-file create-yaml -s proxy -e prod | mustache - mustache/yaml.mustache > subgraphs/proxy-tornado-subgraph.yaml",
|
||||||
"deploy": "graph deploy --node https://api.thegraph.com/deploy/ --ipfs https://api.thegraph.com/ipfs/ tornadocash/bsc-tornado-subgraph"
|
"deploy": "graph deploy --node https://api.thegraph.com/deploy/ --ipfs https://api.thegraph.com/ipfs/ tornadocash/bsc-tornado-subgraph"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@graphprotocol/graph-cli": "0.20.0",
|
"@graphprotocol/graph-cli": "0.20.0",
|
||||||
"@graphprotocol/graph-ts": "0.20.0"
|
"@graphprotocol/graph-ts": "0.20.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"commander": "^7.2.0",
|
||||||
|
"mustache": "^4.2.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +0,0 @@
|
|||||||
|
|
||||||
export let contractMaps = new Map<string, string>();
|
|
||||||
|
|
||||||
contractMaps.set('0x0ce22770451a8acad1220d9d1678656b4fae4a1d', 'bnb-0.1');
|
|
10
yarn.lock
10
yarn.lock
@ -645,6 +645,11 @@ commander@^2.15.0, commander@^2.20.3:
|
|||||||
resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
|
resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
|
||||||
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
|
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
|
||||||
|
|
||||||
|
commander@^7.2.0:
|
||||||
|
version "7.2.0"
|
||||||
|
resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
|
||||||
|
integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
|
||||||
|
|
||||||
concat-map@0.0.1:
|
concat-map@0.0.1:
|
||||||
version "0.0.1"
|
version "0.0.1"
|
||||||
resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
||||||
@ -2071,6 +2076,11 @@ murmurhash3js@^3.0.1:
|
|||||||
resolved "https://registry.npmjs.org/murmurhash3js/-/murmurhash3js-3.0.1.tgz#3e983e5b47c2a06f43a713174e7e435ca044b998"
|
resolved "https://registry.npmjs.org/murmurhash3js/-/murmurhash3js-3.0.1.tgz#3e983e5b47c2a06f43a713174e7e435ca044b998"
|
||||||
integrity sha1-Ppg+W0fCoG9DpxMXTn5DXKBEuZg=
|
integrity sha1-Ppg+W0fCoG9DpxMXTn5DXKBEuZg=
|
||||||
|
|
||||||
|
mustache@^4.2.0:
|
||||||
|
version "4.2.0"
|
||||||
|
resolved "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz#e5892324d60a12ec9c2a73359edca52972bf6f64"
|
||||||
|
integrity sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==
|
||||||
|
|
||||||
mute-stream@0.0.8:
|
mute-stream@0.0.8:
|
||||||
version "0.0.8"
|
version "0.0.8"
|
||||||
resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
|
resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
|
||||||
|
Loading…
Reference in New Issue
Block a user