@sentio/sdk 1.16.3 → 1.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/aptos-processor.d.ts +21 -0
- package/lib/aptos-processor.js +65 -0
- package/lib/aptos-processor.js.map +1 -0
- package/lib/bind-options.d.ts +2 -0
- package/lib/bind-options.js +4 -1
- package/lib/bind-options.js.map +1 -1
- package/lib/builtin/eacaggregatorproxy/index.d.ts +2 -0
- package/lib/builtin/eacaggregatorproxy/index.js +22 -0
- package/lib/builtin/eacaggregatorproxy/index.js.map +1 -0
- package/lib/builtin/eacaggregatorproxy/test-utils.d.ts +6 -0
- package/lib/builtin/eacaggregatorproxy/test-utils.js +57 -0
- package/lib/builtin/eacaggregatorproxy/test-utils.js.map +1 -0
- package/lib/builtin/internal/EACAggregatorProxy.d.ts +460 -0
- package/lib/builtin/internal/EACAggregatorProxy.js +3 -0
- package/lib/builtin/internal/EACAggregatorProxy.js.map +1 -0
- package/lib/builtin/internal/eacaggregatorproxy_processor.d.ts +317 -0
- package/lib/builtin/internal/eacaggregatorproxy_processor.js +813 -0
- package/lib/builtin/internal/eacaggregatorproxy_processor.js.map +1 -0
- package/lib/builtin/internal/factories/EACAggregatorProxy__factory.d.ts +46 -0
- package/lib/builtin/internal/factories/EACAggregatorProxy__factory.js +527 -0
- package/lib/builtin/internal/factories/EACAggregatorProxy__factory.js.map +1 -0
- package/lib/builtin/internal/factories/index.d.ts +1 -0
- package/lib/builtin/internal/factories/index.js +3 -1
- package/lib/builtin/internal/factories/index.js.map +1 -1
- package/lib/builtin/internal/index.d.ts +2 -0
- package/lib/builtin/internal/index.js +3 -1
- package/lib/builtin/internal/index.js.map +1 -1
- package/lib/context.d.ts +5 -0
- package/lib/context.js +15 -3
- package/lib/context.js.map +1 -1
- package/lib/gen/processor/protos/processor.d.ts +2 -0
- package/lib/gen/processor/protos/processor.js +19 -0
- package/lib/gen/processor/protos/processor.js.map +1 -1
- package/lib/index.d.ts +2 -1
- package/lib/index.js +4 -1
- package/lib/index.js.map +1 -1
- package/lib/meter.js +17 -0
- package/lib/meter.js.map +1 -1
- package/lib/numberish.js +7 -0
- package/lib/numberish.js.map +1 -1
- package/lib/processor-state.d.ts +2 -0
- package/lib/processor-state.js +1 -0
- package/lib/processor-state.js.map +1 -1
- package/lib/service.js +47 -0
- package/lib/service.js.map +1 -1
- package/lib/solana/builtin/spl-token-processor.d.ts +16 -1
- package/lib/solana/builtin/spl-token-processor.js +120 -0
- package/lib/solana/builtin/spl-token-processor.js.map +1 -1
- package/lib/solana/builtin/types.d.ts +97 -0
- package/lib/solana/builtin/types.js.map +1 -1
- package/lib/test/{mirrorworld.d.ts → aptos.test.d.ts} +0 -0
- package/lib/test/aptos.test.js +142 -0
- package/lib/test/aptos.test.js.map +1 -0
- package/lib/test/erc20-template.test.js +21 -2
- package/lib/test/erc20-template.test.js.map +1 -1
- package/lib/test/erc20.js +4 -5
- package/lib/test/erc20.js.map +1 -1
- package/lib/test/erc20.test.js +0 -13
- package/lib/test/erc20.test.js.map +1 -1
- package/lib/test/{tic-tac-toe.d.ts → error-capture.test.d.ts} +0 -0
- package/lib/test/error-capture.test.js +76 -0
- package/lib/test/error-capture.test.js.map +1 -0
- package/lib/test/solana.test.js +1 -17
- package/lib/test/solana.test.js.map +1 -1
- package/lib/test/souffl3.d.ts +1 -0
- package/lib/test/souffl3.js +24 -0
- package/lib/test/souffl3.js.map +1 -0
- package/lib/test/sui.test.js +28 -1
- package/lib/test/sui.test.js.map +1 -1
- package/lib/test/test-provider.d.ts +1 -1
- package/lib/test/test-provider.js +11 -5
- package/lib/test/test-provider.js.map +1 -1
- package/lib/test/types/{game_wallet.d.ts → basic_1.d.ts} +2 -21
- package/lib/test/types/basic_1.js +66 -0
- package/lib/test/types/basic_1.js.map +1 -0
- package/lib/test/types/basic_1_processor.d.ts +13 -0
- package/lib/test/types/basic_1_processor.js +41 -0
- package/lib/test/types/basic_1_processor.js.map +1 -0
- package/lib/utils/chainlink-oracles-goerli.csv +8 -0
- package/lib/utils/chainlink-oracles.csv +217 -0
- package/lib/utils/dex-price.d.ts +22 -0
- package/lib/utils/dex-price.js +114 -0
- package/lib/utils/dex-price.js.map +1 -0
- package/lib/utils/dex-price.test.d.ts +1 -0
- package/lib/utils/dex-price.test.js +22 -0
- package/lib/utils/dex-price.test.js.map +1 -0
- package/lib/utils/erc20.d.ts +1 -0
- package/lib/utils/erc20.js +7 -3
- package/lib/utils/erc20.js.map +1 -1
- package/lib/utils/index.d.ts +3 -1
- package/lib/utils/index.js +6 -1
- package/lib/utils/index.js.map +1 -1
- package/package.json +3 -3
- package/src/abis/EACAggregatorProxy.json +227 -0
- package/src/aptos-processor.ts +75 -0
- package/src/bind-options.ts +1 -0
- package/src/builtin/eacaggregatorproxy/index.ts +6 -0
- package/src/builtin/eacaggregatorproxy/test-utils.ts +89 -0
- package/src/builtin/internal/EACAggregatorProxy.ts +861 -0
- package/src/builtin/internal/eacaggregatorproxy_processor.ts +1417 -0
- package/src/builtin/internal/factories/EACAggregatorProxy__factory.ts +533 -0
- package/src/builtin/internal/factories/index.ts +1 -0
- package/src/builtin/internal/index.ts +2 -0
- package/src/context.ts +15 -2
- package/src/gen/processor/protos/processor.ts +20 -0
- package/src/index.ts +2 -1
- package/src/meter.ts +18 -2
- package/src/numberish.ts +7 -0
- package/src/processor-state.ts +3 -0
- package/src/service.ts +51 -0
- package/src/solana/builtin/spl-token-processor.ts +137 -1
- package/src/solana/builtin/types.ts +11 -0
- package/src/test/abis/solana/basic_1.json +62 -0
- package/src/test/aptos.test.ts +148 -0
- package/src/test/erc20-template.test.ts +26 -3
- package/src/test/erc20.test.ts +1 -15
- package/src/test/erc20.ts +4 -5
- package/src/test/error-capture.test.ts +82 -0
- package/src/test/solana.test.ts +1 -18
- package/src/test/souffl3.ts +24 -0
- package/src/test/sui.test.ts +31 -2
- package/src/test/test-provider.ts +11 -5
- package/src/test/types/basic_1.ts +62 -0
- package/src/test/types/basic_1_processor.ts +41 -0
- package/src/utils/chainlink-oracles-goerli.csv +8 -0
- package/src/utils/chainlink-oracles.csv +217 -0
- package/src/utils/dex-price.test.ts +24 -0
- package/src/utils/dex-price.ts +136 -0
- package/src/utils/erc20.ts +5 -1
- package/src/utils/index.ts +3 -1
- package/lib/test/erc20-template.d.ts +0 -1
- package/lib/test/erc20-template.js +0 -23
- package/lib/test/erc20-template.js.map +0 -1
- package/lib/test/mirrorworld.js +0 -42
- package/lib/test/mirrorworld.js.map +0 -1
- package/lib/test/tic-tac-toe.js +0 -31
- package/lib/test/tic-tac-toe.js.map +0 -1
- package/lib/test/types/game_wallet.js +0 -1396
- package/lib/test/types/game_wallet.js.map +0 -1
- package/lib/test/types/game_wallet_processor.d.ts +0 -107
- package/lib/test/types/game_wallet_processor.js +0 -105
- package/lib/test/types/game_wallet_processor.js.map +0 -1
- package/src/test/abis/solana/mirrorworld.json +0 -1392
- package/src/test/erc20-template.ts +0 -25
- package/src/test/mirrorworld.ts +0 -40
- package/src/test/sentio.yaml +0 -4
- package/src/test/tic-tac-toe.ts +0 -31
- package/src/test/types/game_wallet.ts +0 -1392
- package/src/test/types/game_wallet_processor.ts +0 -113
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { assert } from 'chai'
|
|
2
|
+
|
|
3
|
+
import { TestProcessorServer } from './test-processor-server'
|
|
4
|
+
import { BigNumber } from 'ethers'
|
|
5
|
+
import { mockApprovalLog, mockOwnershipTransferredLog, mockTransferLog } from '../builtin/erc20/test-utils'
|
|
6
|
+
import { ERC20Processor } from '../builtin/internal/erc20_processor'
|
|
7
|
+
import { toBigDecimal } from '../utils'
|
|
8
|
+
import { BigDecimal } from '@sentio/sdk'
|
|
9
|
+
|
|
10
|
+
describe('Test Error Capture', () => {
|
|
11
|
+
const service = new TestProcessorServer(() => {
|
|
12
|
+
ERC20Processor.bind({ address: '0x80009ff8154bd5653c6dda2fa5f5053e5a5c1a91' })
|
|
13
|
+
.onEventApproval((evt, ctx) => {
|
|
14
|
+
const v = new BigDecimal(1).div(toBigDecimal(evt.args.value))
|
|
15
|
+
ctx.meter.Gauge('xx').record(v)
|
|
16
|
+
})
|
|
17
|
+
.onEventTransfer((evt, ctx) => {
|
|
18
|
+
const v = new BigDecimal(0).div(toBigDecimal(evt.args.value))
|
|
19
|
+
ctx.meter.Gauge('xx').record(v)
|
|
20
|
+
})
|
|
21
|
+
.onEventOwnershipTransferred((evt, ctx) => {
|
|
22
|
+
ctx.meter.Gauge('xx').record(BigNumber.from(10 ** 18))
|
|
23
|
+
})
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
beforeAll(async () => {
|
|
27
|
+
await service.start()
|
|
28
|
+
})
|
|
29
|
+
|
|
30
|
+
test('Check infinite', async () => {
|
|
31
|
+
let err: Error | undefined
|
|
32
|
+
try {
|
|
33
|
+
// TODO check why order matters
|
|
34
|
+
// await service.testLog(mockApprovalLog("0x80009ff8154bd5653c6dda2fa5f5053e5a5c1a91", {
|
|
35
|
+
// value: BigNumber.from(3000000),
|
|
36
|
+
// spender: "0x0000000000000000000000000000000000000000",
|
|
37
|
+
// owner: "0x80009ff8154bd5653c6dda2fa5f5053e5a5c1a91"
|
|
38
|
+
// }))
|
|
39
|
+
await service.testLog(
|
|
40
|
+
mockApprovalLog('0x80009ff8154bd5653c6dda2fa5f5053e5a5c1a91', {
|
|
41
|
+
owner: '0x80009ff8154bd5653c6dda2fa5f5053e5a5c1a91',
|
|
42
|
+
spender: '0x0000000000000000000000000000000000000000',
|
|
43
|
+
value: BigNumber.from(0),
|
|
44
|
+
})
|
|
45
|
+
)
|
|
46
|
+
} catch (e) {
|
|
47
|
+
err = e
|
|
48
|
+
}
|
|
49
|
+
assert(err?.message.includes('Record infinite value'))
|
|
50
|
+
})
|
|
51
|
+
|
|
52
|
+
test('Check NaN', async () => {
|
|
53
|
+
let err: Error | undefined
|
|
54
|
+
try {
|
|
55
|
+
await service.testLog(
|
|
56
|
+
mockTransferLog('0x80009ff8154bd5653c6dda2fa5f5053e5a5c1a91', {
|
|
57
|
+
from: '0x80009ff8154bd5653c6dda2fa5f5053e5a5c1a91',
|
|
58
|
+
to: '0x0000000000000000000000000000000000000000',
|
|
59
|
+
value: BigNumber.from(0),
|
|
60
|
+
})
|
|
61
|
+
)
|
|
62
|
+
} catch (e) {
|
|
63
|
+
err = e
|
|
64
|
+
}
|
|
65
|
+
assert(err?.message.includes('NaN'))
|
|
66
|
+
})
|
|
67
|
+
|
|
68
|
+
test('Check overflow', async () => {
|
|
69
|
+
let err: Error | undefined
|
|
70
|
+
try {
|
|
71
|
+
await service.testLog(
|
|
72
|
+
mockOwnershipTransferredLog('0x80009ff8154bd5653c6dda2fa5f5053e5a5c1a91', {
|
|
73
|
+
previousOwner: '0x80009ff8154bd5653c6dda2fa5f5053e5a5c1a91',
|
|
74
|
+
newOwner: '0x0000000000000000000000000000000000000000',
|
|
75
|
+
})
|
|
76
|
+
)
|
|
77
|
+
} catch (e) {
|
|
78
|
+
err = e
|
|
79
|
+
}
|
|
80
|
+
assert(err?.message.includes('overflow'))
|
|
81
|
+
})
|
|
82
|
+
})
|
package/src/test/solana.test.ts
CHANGED
|
@@ -11,7 +11,6 @@ import { firstCounterValue } from './metric-utils'
|
|
|
11
11
|
|
|
12
12
|
describe('Test Solana Example', () => {
|
|
13
13
|
const service = new TestProcessorServer(() => {
|
|
14
|
-
require('./mirrorworld')
|
|
15
14
|
require('./wormhole-token-bridge')
|
|
16
15
|
})
|
|
17
16
|
|
|
@@ -21,23 +20,7 @@ describe('Test Solana Example', () => {
|
|
|
21
20
|
|
|
22
21
|
test('check configuration ', async () => {
|
|
23
22
|
const config = await service.getConfig({})
|
|
24
|
-
expect(config.contractConfigs).length(
|
|
25
|
-
})
|
|
26
|
-
|
|
27
|
-
test('Check mirrorworld instruction dispatch', async () => {
|
|
28
|
-
const request: ProcessInstructionsRequest = {
|
|
29
|
-
instructions: [
|
|
30
|
-
{
|
|
31
|
-
instructionData: 'CACadoFwjNvan4GP8gh3Jtm1qdeoKX5j2SbSNEiB',
|
|
32
|
-
slot: Long.fromNumber(0),
|
|
33
|
-
programAccountId: 'F78NhTC9XmP1DKsCBRz5LGdQc4n4yFbj2dURiv7T9gGZ',
|
|
34
|
-
},
|
|
35
|
-
],
|
|
36
|
-
}
|
|
37
|
-
const res = await service.processInstructions(request)
|
|
38
|
-
expect(res.result?.counters).length(3)
|
|
39
|
-
expect(res.result?.gauges).length(0)
|
|
40
|
-
expect(firstCounterValue(res.result, 'deposit_pool_total_value')).equal(5000000000n)
|
|
23
|
+
expect(config.contractConfigs).length(2)
|
|
41
24
|
})
|
|
42
25
|
|
|
43
26
|
test('Check wormhole token bridge instruction dispatch', async () => {
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { AptosBindOptions } from '../bind-options'
|
|
2
|
+
import { AptosBaseProcessor } from '../aptos-processor'
|
|
3
|
+
|
|
4
|
+
class Souffl3 extends AptosBaseProcessor {
|
|
5
|
+
static bind(options: AptosBindOptions): Souffl3 {
|
|
6
|
+
if (options && !options.name) {
|
|
7
|
+
options.name = 'souffl3'
|
|
8
|
+
}
|
|
9
|
+
return new Souffl3(options)
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
Souffl3.bind({
|
|
14
|
+
startBlock: 6604913,
|
|
15
|
+
address: '4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807',
|
|
16
|
+
}).onTransaction((txn, ctx) => {
|
|
17
|
+
if (txn.events) {
|
|
18
|
+
for (const event of txn.events) {
|
|
19
|
+
if (event && event.type === '0x3::token::DepositEvent') {
|
|
20
|
+
ctx.meter.Counter('deposit_token_count').add(Number(event.data.amount))
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
})
|
package/src/test/sui.test.ts
CHANGED
|
@@ -1,12 +1,41 @@
|
|
|
1
1
|
import { expect } from 'chai'
|
|
2
2
|
import { TextEncoder } from 'util'
|
|
3
|
-
import { ProcessTransactionsRequest } from '..'
|
|
3
|
+
import { ProcessTransactionsRequest, SuiBaseProcessor, SuiBindOptions } from '..'
|
|
4
4
|
|
|
5
5
|
import { TestProcessorServer } from './test-processor-server'
|
|
6
6
|
|
|
7
7
|
describe('Test Sui Example', () => {
|
|
8
8
|
const service = new TestProcessorServer(() => {
|
|
9
|
-
|
|
9
|
+
class TicTacToeProcessor extends SuiBaseProcessor {
|
|
10
|
+
static bind(options: SuiBindOptions): TicTacToeProcessor {
|
|
11
|
+
if (options && !options.name) {
|
|
12
|
+
options.name = 'TicTacToe'
|
|
13
|
+
}
|
|
14
|
+
return new TicTacToeProcessor(options)
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
TicTacToeProcessor.bind({
|
|
19
|
+
startBlock: 0,
|
|
20
|
+
address: '',
|
|
21
|
+
}).onTransaction((txn, ctx) => {
|
|
22
|
+
if (txn.certificate.data.transactions && txn.certificate.data.transactions.length > 0) {
|
|
23
|
+
if (
|
|
24
|
+
txn.certificate.data.transactions[0].Call.package.objectId === '0xb8252513f0b9efaa3e260842c4b84d8ff933522d'
|
|
25
|
+
) {
|
|
26
|
+
if (txn.effects.events) {
|
|
27
|
+
txn.effects.events.forEach((event: { newObject: { recipient: { AddressOwner: any } } }) => {
|
|
28
|
+
if (event.newObject) {
|
|
29
|
+
const owner = event.newObject.recipient.AddressOwner
|
|
30
|
+
if ((owner.toString() as string).includes('0x1c27')) {
|
|
31
|
+
ctx.meter.Counter('win_count').add(1)
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
})
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
})
|
|
10
39
|
})
|
|
11
40
|
|
|
12
41
|
beforeAll(async () => {
|
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
import { ChainConfig } from '../chain-config'
|
|
2
2
|
import { setProvider } from '@sentio/sdk'
|
|
3
|
+
import { CHAIN_MAP } from '../utils/chainmap'
|
|
3
4
|
|
|
4
|
-
export function loadTestProvidersFromEnv(
|
|
5
|
+
export function loadTestProvidersFromEnv(requiredChainIds: string[] | string): boolean {
|
|
5
6
|
const dummyConfig: Record<string, ChainConfig> = {}
|
|
6
7
|
|
|
7
|
-
if (!Array.isArray(
|
|
8
|
-
|
|
8
|
+
if (!Array.isArray(requiredChainIds)) {
|
|
9
|
+
requiredChainIds = [requiredChainIds]
|
|
9
10
|
}
|
|
10
11
|
|
|
11
|
-
for (const k of
|
|
12
|
+
for (const k of Object.keys(CHAIN_MAP)) {
|
|
12
13
|
const envKey = 'TEST_ENDPOINT_' + k
|
|
13
14
|
const http = process.env[envKey]
|
|
14
15
|
if (!http) {
|
|
15
|
-
|
|
16
|
+
continue
|
|
16
17
|
}
|
|
17
18
|
dummyConfig[k] = {
|
|
18
19
|
ChainID: k,
|
|
@@ -21,5 +22,10 @@ export function loadTestProvidersFromEnv(ids: string[] | string): boolean {
|
|
|
21
22
|
}
|
|
22
23
|
|
|
23
24
|
setProvider(dummyConfig)
|
|
25
|
+
for (const id of requiredChainIds) {
|
|
26
|
+
if (!requiredChainIds.includes(id)) {
|
|
27
|
+
return false
|
|
28
|
+
}
|
|
29
|
+
}
|
|
24
30
|
return true
|
|
25
31
|
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
export const basic_1_idl = {
|
|
2
|
+
"version": "0.1.0",
|
|
3
|
+
"name": "basic_1",
|
|
4
|
+
"instructions": [
|
|
5
|
+
{
|
|
6
|
+
"name": "initialize",
|
|
7
|
+
"accounts": [
|
|
8
|
+
{
|
|
9
|
+
"name": "myAccount",
|
|
10
|
+
"isMut": true,
|
|
11
|
+
"isSigner": true
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"name": "user",
|
|
15
|
+
"isMut": true,
|
|
16
|
+
"isSigner": true
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"name": "systemProgram",
|
|
20
|
+
"isMut": false,
|
|
21
|
+
"isSigner": false
|
|
22
|
+
}
|
|
23
|
+
],
|
|
24
|
+
"args": [
|
|
25
|
+
{
|
|
26
|
+
"name": "data",
|
|
27
|
+
"type": "u64"
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"name": "update",
|
|
33
|
+
"accounts": [
|
|
34
|
+
{
|
|
35
|
+
"name": "myAccount",
|
|
36
|
+
"isMut": true,
|
|
37
|
+
"isSigner": false
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
"args": [
|
|
41
|
+
{
|
|
42
|
+
"name": "data",
|
|
43
|
+
"type": "u64"
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"accounts": [
|
|
49
|
+
{
|
|
50
|
+
"name": "MyAccount",
|
|
51
|
+
"type": {
|
|
52
|
+
"kind": "struct",
|
|
53
|
+
"fields": [
|
|
54
|
+
{
|
|
55
|
+
"name": "data",
|
|
56
|
+
"type": "u64"
|
|
57
|
+
}
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
]
|
|
62
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { BorshInstructionCoder, Instruction, Idl, BN } from '@project-serum/anchor'
|
|
2
|
+
import { SolanaBaseProcessor, SolanaContext, SolanaBindOptions } from "@sentio/sdk"
|
|
3
|
+
import { basic_1_idl } from "./basic_1"
|
|
4
|
+
import bs58 from 'bs58'
|
|
5
|
+
import { PublicKey } from '@solana/web3.js'
|
|
6
|
+
|
|
7
|
+
export class Basic1Processor extends SolanaBaseProcessor {
|
|
8
|
+
static bind(options: SolanaBindOptions): Basic1Processor {
|
|
9
|
+
if (options && !options.name) {
|
|
10
|
+
options.name = 'Basic1'
|
|
11
|
+
}
|
|
12
|
+
return new Basic1Processor(options)
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
decodeInstruction: (rawInstruction: string) => Instruction | null = (rawInstruction) => {
|
|
16
|
+
const instructionCoder = new BorshInstructionCoder(basic_1_idl as Idl)
|
|
17
|
+
const decodedIns = instructionCoder.decode(Buffer.from(bs58.decode(rawInstruction)))
|
|
18
|
+
return decodedIns
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
onInitialize(handler: (args: { data: BN }, ctx: SolanaContext) => void): Basic1Processor {
|
|
23
|
+
this.onInstruction('initialize', (ins: Instruction, ctx) => {
|
|
24
|
+
if (ins) {
|
|
25
|
+
handler(ins.data as { data: BN }, ctx)
|
|
26
|
+
}
|
|
27
|
+
})
|
|
28
|
+
return this
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
onUpdate(handler: (args: { data: BN }, ctx: SolanaContext) => void): Basic1Processor {
|
|
32
|
+
this.onInstruction('update', (ins: Instruction, ctx) => {
|
|
33
|
+
if (ins) {
|
|
34
|
+
handler(ins.data as { data: BN }, ctx)
|
|
35
|
+
}
|
|
36
|
+
})
|
|
37
|
+
return this
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
}
|
|
41
|
+
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
BTC / ETH,,,0x779877A7B0D9E8603169DdbD7836e478b4624789
|
|
2
|
+
BTC / USD,,,0xA39434A63A52E749F02807ae27335515BA4b07F7
|
|
3
|
+
DAI / USD,,,0x0d79df66BE487753B02D015Fb622DED7f0E9798d
|
|
4
|
+
ETH / USD,,,0xD4a33860578De61DBAbDc8BFdb98FD742fA7028e
|
|
5
|
+
FORTH / USD,,,0x7A65Cf6C2ACE993f09231EC1Ea7363fb29C13f2F
|
|
6
|
+
LINK / ETH,,,0xb4c4a493AB6356497713A78FFA6c60FB53517c63
|
|
7
|
+
LINK / USD,,,0x48731cF7e84dc94C5f84577882c14Be11a5B7456
|
|
8
|
+
USDC / USD,,,0xAb5c49580294Aff77670F839ea425f5b78ab3Ae7
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
1INCH / ETH,1inch,Crypto,0x72AFAECF99C9d9C8215fF44C77B94B99C28741e8
|
|
2
|
+
1INCH / USD,1inch,Crypto,0xc929ad75B72593967DE83E7F7Cda0493458261D9
|
|
3
|
+
AAPL / USD,Apple,Equities,0x139C8512Cde1778e9b9a8e721ce1aEbd4dD43587
|
|
4
|
+
AAVE / ETH,Aave,Crypto,0x6Df09E975c830ECae5bd4eD9d90f3A95a4f88012
|
|
5
|
+
AAVE / USD,Aave,Crypto,0x547a514d5e3769680Ce22B2361c10Ea13619e8a9
|
|
6
|
+
ADA / USD,Cardano,Crypto,0xAE48c91dF1fE419994FFDa27da09D5aC69c30f55
|
|
7
|
+
ADX / USD,Adex,Crypto,0x231e764B44b2C1b7Ca171fa8021A24ed520Cde10
|
|
8
|
+
ALBT / USD,Aliiance Block,Crypto,0x057e52Fb830318E096CD96F369f0DB4B196fBfa7
|
|
9
|
+
ALCX / ETH,Alchemix,Crypto,0x194a9AaF2e0b67c35915cD01101585A33Fe25CAa
|
|
10
|
+
ALCX / USD,Alchemix,Crypto,0xc355e4C0B3ff4Ed0B49EaACD55FE29B311f42976
|
|
11
|
+
ALGO / USD,Algorand,Crypto,0xC33c0400dBD8043c5bE09512501Ce59253D499cE
|
|
12
|
+
ALPHA / ETH,Alpha Finance,Crypto,0x89c7926c7c15fD5BFDB1edcFf7E7fC8283B578F6
|
|
13
|
+
AMP / USD,Amp,Crypto,0x8797ABc4641dE76342b8acE9C63e3301DC35e3d8
|
|
14
|
+
AMPL / ETH,Ampleforth,Crypto,0x492575FDD11a0fCf2C6C719867890a7648d526eB
|
|
15
|
+
AMPL / USD,Ampleforth,Crypto,0xe20CA8D7546932360e37E9D72c1a47334af57706
|
|
16
|
+
AMZN / USD,Amazon,Equities,0x8994115d287207144236c13Be5E2bDbf6357D9Fd
|
|
17
|
+
ANKR / USD,Ankr,Crypto,0x7eed379bf00005CfeD29feD4009669dE9Bcc21ce
|
|
18
|
+
ANT / ETH,Aragon,Crypto,0x8f83670260F8f7708143b836a2a6F11eF0aBac01
|
|
19
|
+
APE / ETH,APECoin,Crypto,0xc7de7f4d4C9c991fF62a07D18b3E31e349833A18
|
|
20
|
+
APE / USD,APECoin,Crypto,0xD10aBbC76679a20055E167BB80A24ac851b37056
|
|
21
|
+
ARPA / USD,ARPA Chain,Crypto,0xc40ec815A2f8eb9912BD688d3bdE6B6D50A37ff2
|
|
22
|
+
ATOM / ETH,Cosmos,Crypto,0x15c8eA24Ba2d36671Fa22aD4Cff0a8eafe144352
|
|
23
|
+
ATOM / USD,Cosmos,Crypto,0xDC4BDB458C6361093069Ca2aD30D74cc152EdC75
|
|
24
|
+
AUD / USD,Australian Dollar,Forex,0x77F9710E7d0A19669A13c055F62cd80d313dF022
|
|
25
|
+
AVAX / USD,Avalanche,Crypto,0xFF3EEb22B5E3dE6e705b44749C2559d704923FD7
|
|
26
|
+
AXS / ETH,Axie Infinity,Crypto,0x8B4fC5b68cD50eAc1dD33f695901624a4a1A0A8b
|
|
27
|
+
BADGER / ETH,Badger DAO,Crypto,0x58921Ac140522867bf50b9E009599Da0CA4A2379
|
|
28
|
+
BADGER / USD,Badger DAO,Crypto,0x66a47b7206130e6FF64854EF0E1EDfa237E65339
|
|
29
|
+
BAL / ETH,Balancer,Crypto,0xC1438AA3823A6Ba0C159CfA8D98dF5A994bA120b
|
|
30
|
+
BAL / USD,Balancer,Crypto,0xdF2917806E30300537aEB49A7663062F4d1F2b5F
|
|
31
|
+
BAND / ETH,Band Protocol,Crypto,0x0BDb051e10c9718d1C29efbad442E88D38958274
|
|
32
|
+
BAND / USD,Band Protocol,Crypto,0x919C77ACc7373D000b329c1276C76586ed2Dd19F
|
|
33
|
+
BAT / ETH,Basic Attention Token,Crypto,0x0d16d4528239e9ee52fa531af613AcdB23D88c94
|
|
34
|
+
BAT / USD,Basic Attention Token,Crypto,0x9441D7556e7820B5ca42082cfa99487D56AcA958
|
|
35
|
+
BCH / USD,Bitcoin Cash,Crypto,0x9F0F69428F923D6c95B781F89E165C9b2df9789D
|
|
36
|
+
BETA / ETH,Beta Finance,Crypto,0x8eb7bAe1eCd3dcf87159Eb5BACe78209722F795B
|
|
37
|
+
BIT / USD,BitDAO,Crypto,0x7b33EbfA52F215a30FaD5a71b3FeE57a4831f1F0
|
|
38
|
+
BNB / ETH,BNB,Crypto,0xc546d2d06144F9DD42815b8bA46Ee7B8FcAFa4a2
|
|
39
|
+
BNB / USD,BNB,Crypto,0x14e613AC84a31f709eadbdF89C6CC390fDc9540A
|
|
40
|
+
BNT / ETH,Bancor,Crypto,0xCf61d1841B178fe82C8895fe60c2EDDa08314416
|
|
41
|
+
BNT / USD,Bancor,Crypto,0x1E6cF0D433de4FE882A437ABC654F58E1e78548c
|
|
42
|
+
BOND / ETH,Barnbridge,Crypto,0xdd22A54e05410D8d1007c38b5c7A3eD74b855281
|
|
43
|
+
BRL / USD,Brazilian Real,Forex,0x971E8F1B779A5F1C36e1cd7ef44Ba1Cc2F5EeE0f
|
|
44
|
+
BTC / ETH,Bitcoin,Crypto,0xdeb288F737066589598e9214E782fa5A8eD689e8
|
|
45
|
+
BTC / USD,Bitcoin,Crypto,0xF4030086522a5bEEa4988F8cA5B36dbC97BeE88c
|
|
46
|
+
BUSD / ETH,Binance USD,Crypto,0x614715d2Af89E6EC99A233818275142cE88d1Cfd
|
|
47
|
+
BUSD / USD,Binance USD,Crypto,0x833D8Eb16D306ed1FbB5D7A2E019e106B960965A
|
|
48
|
+
C98 / USD,C98,Crypto,0xE95CDc33E1F5BfE7eB26f45E29C6C9032B97db7F
|
|
49
|
+
CAD / USD,Canadian Dollar,Forex,0xa34317DB73e77d453b1B8d04550c44D10e981C8e
|
|
50
|
+
CAKE / USD,Pancakeswap,Crypto,0xEb0adf5C06861d6c07174288ce4D0a8128164003
|
|
51
|
+
CEL / ETH,Celsius,Crypto,0x75FbD83b4bd51dEe765b2a01e8D3aa1B020F9d33
|
|
52
|
+
CELO / ETH,Celo,Crypto,0x9ae96129ed8FE0C707D6eeBa7b90bB1e139e543e
|
|
53
|
+
CHF / USD,Swiss Franc,Forex,0x449d117117838fFA61263B61dA6301AA2a88B13A
|
|
54
|
+
CNY / USD,Chinese Yuan,Forex,0xeF8A4aF35cd47424672E3C590aBD37FBB7A7759a
|
|
55
|
+
COMP / ETH,Compound,Crypto,0x1B39Ee86Ec5979ba5C322b826B3ECb8C79991699
|
|
56
|
+
COMP / USD,Compound,Crypto,0xdbd020CAeF83eFd542f4De03e3cF0C28A4428bd5
|
|
57
|
+
CREAM / ETH,CREAM Finance,Crypto,0x82597CFE6af8baad7c0d441AA82cbC3b51759607
|
|
58
|
+
CRO / ETH,Cronos,Crypto,0xcA696a9Eb93b81ADFE6435759A29aB4cf2991A96
|
|
59
|
+
CRO / USD,Cronos,Crypto,0x00Cb80Cf097D9aA9A3779ad8EE7cF98437eaE050
|
|
60
|
+
CRV / ETH,Curve DAO,Crypto,0x8a12Be339B0cD1829b91Adc01977caa5E9ac121e
|
|
61
|
+
CRV / USD,Curve DAO,Crypto,0xCd627aA160A6fA45Eb793D19Ef54f5062F20f33f
|
|
62
|
+
CSPR / USD,Casper Network,Crypto,0x9e37a8Ee3bFa8eD6783Db031Dc458d200b226074
|
|
63
|
+
CTSI / ETH,Cartesi,Crypto,0x0a1d1b9847d602e789be38B802246161FFA24930
|
|
64
|
+
CVX / ETH,Convex Finance,Crypto,0xC9CbF687f43176B302F03f5e58470b77D07c61c6
|
|
65
|
+
CVX / USD,Convex Finance,Crypto,0xd962fC30A72A84cE50161031391756Bf2876Af5D
|
|
66
|
+
DAI / ETH,DAI,Crypto,0x773616E4d11A78F511299002da57A0a94577F1f4
|
|
67
|
+
DAI / USD,DAI,Crypto,0xAed0c38402a5d19df6E4c03F4E2DceD6e29c1ee9
|
|
68
|
+
DASH / USD,Dash,Crypto,0xFb0cADFEa136E9E343cfb55B863a6Df8348ab912
|
|
69
|
+
DIA / USD,DIA,Equities,0xeE636E1f7A0A846EEc2385E729CeA7D1b339D40D
|
|
70
|
+
DODO / USD,Dodo,Crypto,0x9613A51Ad59EE375e6D8fa12eeef0281f1448739
|
|
71
|
+
DOGE / USD,Dogecoin,Crypto,0x2465CefD3b488BE410b941b1d4b2767088e2A028
|
|
72
|
+
DOT / USD,Polkadot,Crypto,0x1C07AFb8E2B827c5A4739C6d59Ae3A5035f28734
|
|
73
|
+
DPI / USD,DefiPulse Index,Crypto,0xD2A593BF7594aCE1faD597adb697b5645d5edDB2
|
|
74
|
+
DYDX / USD,dYdX,Crypto,0x478909D4D798f3a1F11fFB25E4920C959B4aDe0b
|
|
75
|
+
ENJ / ETH,Enjin Coin,Crypto,0x24D9aB51950F3d62E9144fdC2f3135DAA6Ce8D1B
|
|
76
|
+
ENJ / USD,Enjin Coin,Crypto,0x23905C55dC11D609D5d11Dc604905779545De9a7
|
|
77
|
+
ENS / USD,Ethereum Name Service,Crypto,0x5C00128d4d1c2F4f652C267d7bcdD7aC99C16E16
|
|
78
|
+
EOS / USD,EOS,Crypto,0x10a43289895eAff840E8d45995BBa89f9115ECEe
|
|
79
|
+
ERN / USD,Ethernity Chain,Crypto,0x0a87e12689374A4EF49729582B474a1013cceBf8
|
|
80
|
+
ETC / USD,Ethereum Classic,Crypto,0xaEA2808407B7319A31A383B6F8B60f04BCa23cE2
|
|
81
|
+
ETH / BTC,Ethereum,Crypto,0xAc559F25B1619171CbC396a50854A3240b6A4e99
|
|
82
|
+
ETH / USD,Ethereum,Crypto,0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419
|
|
83
|
+
EUR / USD,Euro,Forex,0xb49f677943BC038e9857d61E7d053CaA2C1734C1
|
|
84
|
+
EURT / USD,Tether Euro,Crypto,0x01D391A48f4F7339aC64CA2c83a07C22F95F587a
|
|
85
|
+
FARM / ETH,Harvest Finance,Crypto,0x611E0d2709416E002A3f38085e4e1cf77c015921
|
|
86
|
+
FB / USD,Meta,Equities,0xCe1051646393087e706288C1B57Fd26446657A7f
|
|
87
|
+
FEI / ETH,FEI Protocol,Crypto,0x7F0D2c2838c6AC24443d13e23d99490017bDe370
|
|
88
|
+
FEI / USD,FEI Protocol,Crypto,0x31e0a88fecB6eC0a411DBe0e9E76391498296EE9
|
|
89
|
+
FIL / ETH,Filecoin,Crypto,0x0606Be69451B1C9861Ac6b3626b99093b713E801
|
|
90
|
+
FLOW / USD,Flow,Crypto,0xD9BdD9f5ffa7d89c846A5E3231a093AE4b3469D2
|
|
91
|
+
FOR / USD,ForTube,Crypto,0x456834f736094Fb0AAD40a9BBc9D4a0f37818A54
|
|
92
|
+
FORTH / USD,Ampleforth Governance,Crypto,0x7D77Fd73E468baECe26852776BeaF073CDc55fA0
|
|
93
|
+
FOX / USD,Shapeshift FOX,Crypto,0xccA02FFEFAcE21325befD6616cB4Ba5fCB047480
|
|
94
|
+
FRAX / ETH,FRAX,Crypto,0x14d04Fff8D21bd62987a5cE9ce543d2F1edF5D3E
|
|
95
|
+
FRAX / USD,FRAX,Crypto,0xB9E1E3A9feFf48998E45Fa90847ed4D467E8BcfD
|
|
96
|
+
FTM / ETH,Fantom,Crypto,0x2DE7E4a9488488e0058B95854CC2f7955B35dC9b
|
|
97
|
+
FTT / ETH,FTX Token,Crypto,0xF0985f7E2CaBFf22CecC5a71282a89582c382EFE
|
|
98
|
+
FTT / USD,FTX Token,Crypto,0x84e3946C6df27b453315a1B38e4dECEF23d9F16F
|
|
99
|
+
FXS / USD,Frax Share,Crypto,0x6Ebc52C8C1089be9eB3945C4350B68B8E4C2233f
|
|
100
|
+
GBP / USD,Pound Sterling,Forex,0x5c0Ab2d9b5a7ed9f470386e82BB36A3613cDd4b5
|
|
101
|
+
GHST / ETH,Aavegotchi,Crypto,0x5877385f9F51B46Bbd93F24AD278D681E1Fd2A93
|
|
102
|
+
GLM / USD,Golen,Crypto,0x83441C3A10F4D05de6e0f2E849A850Ccf27E6fa7
|
|
103
|
+
GNO / ETH,Gnosis,Crypto,0xA614953dF476577E90dcf4e3428960e221EA4727
|
|
104
|
+
GOOGL / USD,Alphabet,Equities,0x36D39936BeA501755921beB5A382a88179070219
|
|
105
|
+
GRT / ETH,The Graph,Crypto,0x17D054eCac33D91F7340645341eFB5DE9009F1C1
|
|
106
|
+
GRT / USD,The Graph,Crypto,0x86cF33a451dE9dc61a2862FD94FF4ad4Bd65A5d2
|
|
107
|
+
GTC / ETH,GitCoin,Crypto,0x0e773A17a01E2c92F5d4c53435397E2bd48e215F
|
|
108
|
+
GUSD / ETH,Gemini Dollar,Crypto,0x96d15851CBac05aEe4EFD9eA3a3DD9BDEeC9fC28
|
|
109
|
+
GUSD / USD,Gemini Dollar,Crypto,0xa89f5d2365ce98B3cD68012b6f503ab1416245Fc
|
|
110
|
+
HBAR / USD,Hedera Hashgraph,Crypto,0x38C5ae3ee324ee027D88c5117ee58d07c9b4699b
|
|
111
|
+
HIGH / USD,Highstreet,Crypto,0xe2F95bC12FE8a3C35684Be7586C39fD7c0E5b403
|
|
112
|
+
HT / USD,Huobi Token,Crypto,0xE1329B3f6513912CAf589659777b66011AEE5880
|
|
113
|
+
HUSD / ETH,HUSD,Crypto,0x1B61BAD1495161bCb6C03DDB0E41622c0270bB1A
|
|
114
|
+
ILV / ETH,Illuvium,Crypto,0xf600984CCa37cd562E74E3EE514289e3613ce8E4
|
|
115
|
+
IMX / USD,Immutable X,Crypto,0xBAEbEFc1D023c0feCcc047Bff42E75F15Ff213E6
|
|
116
|
+
INJ / USD,Injective Protocol,Crypto,0xaE2EbE3c4D20cE13cE47cbb49b6d7ee631Cd816e
|
|
117
|
+
INR / USD,Indian Rupee,Forex,0x605D5c2fBCeDb217D7987FC0951B5753069bC360
|
|
118
|
+
IOST / USD,IOST,Crypto,0xd0935838935349401c73a06FCde9d63f719e84E5
|
|
119
|
+
IOTX / USD,IoTeX,Crypto,0x96c45535d235148Dc3ABA1E48A6E3cFB3510f4E2
|
|
120
|
+
JPY / USD,Japanese Yen,Forex,0xBcE206caE7f0ec07b545EddE332A47C2F75bbeb3
|
|
121
|
+
KNC / ETH,Kyber Network Crystal,Crypto,0x656c0544eF4C98A6a98491833A89204Abb045d6b
|
|
122
|
+
KNC / USD,Kyber Network,Crypto,0xf8fF43E991A81e6eC886a3D281A2C6cC19aE70Fc
|
|
123
|
+
KP3R / ETH,Keep3r v1,Crypto,0xe7015CCb7E5F788B8c1010FC22343473EaaC3741
|
|
124
|
+
KRW / USD,Korean Won,Forex,0x01435677FB11763550905594A16B645847C1d0F3
|
|
125
|
+
KSM / USD,Kusama,Crypto,0x06E4164E24E72B879D93360D1B9fA05838A62EB5
|
|
126
|
+
LDO / ETH,Lido DAO,Crypto,0x4e844125952D32AcdF339BE976c98E22F6F318dB
|
|
127
|
+
LINK / ETH,Chainlink,Crypto,0xDC530D9457755926550b59e8ECcdaE7624181557
|
|
128
|
+
LINK / USD,Chainlink,Crypto,0x2c1d072e956AFFC0D435Cb7AC38EF18d24d9127c
|
|
129
|
+
LON / ETH,Tokenlon,Crypto,0x13A8F2cC27ccC2761ca1b21d2F3E762445f201CE
|
|
130
|
+
LRC / ETH,Loopring,Crypto,0x160AC928A16C93eD4895C2De6f81ECcE9a7eB7b4
|
|
131
|
+
LTC / USD,Litecoin,Crypto,0x6AF09DF7563C363B5763b9102712EbeD3b9e859B
|
|
132
|
+
LUSD / USD,Liquity USD,Crypto,0x3D7aE7E594f2f2091Ad8798313450130d0Aba3a0
|
|
133
|
+
MANA / ETH,Decentraland,Crypto,0x82A44D92D6c329826dc557c5E1Be6ebeC5D5FeB9
|
|
134
|
+
MANA / USD,Decentraland,Crypto,0x56a4857acbcfe3a66965c251628B1c9f1c408C19
|
|
135
|
+
MATIC / USD,Polygon (MATIC),Crypto,0x7bAC85A8a13A4BcD8abb3eB7d6b4d632c5a57676
|
|
136
|
+
MIM / USD,Magic Internet Money,Crypto,0x7A364e8770418566e3eb2001A96116E6138Eb32F
|
|
137
|
+
MKR / ETH,Maker,Crypto,0x24551a8Fb2A7211A25a17B1481f043A8a8adC7f2
|
|
138
|
+
MKR / USD,Maker,Crypto,0xec1D1B3b0443256cc3860e24a46F108e699484Aa
|
|
139
|
+
MLN / ETH,Melon,Crypto,0xDaeA8386611A157B08829ED4997A8A62B557014C
|
|
140
|
+
MSFT / USD,Microsoft,Equities,0x021Fb44bfeafA0999C7b07C4791cf4B859C3b431
|
|
141
|
+
NEAR / USD,NEAR Protocol,Crypto,0xC12A6d1D827e23318266Ef16Ba6F397F2F91dA9b
|
|
142
|
+
NFLX / USD,Netflix,Equities,0x67C2e69c5272B94AF3C90683a9947C39Dc605ddE
|
|
143
|
+
NMR / ETH,Numeraire,Crypto,0x9cB2A01A7E64992d32A34db7cEea4c919C391f6A
|
|
144
|
+
NMR / USD,Numeraire,Crypto,0xcC445B35b3636bC7cC7051f4769D8982ED0d449A
|
|
145
|
+
NZD / USD,New Zealand Dollar,Forex,0x3977CFc9e4f29C184D4675f4EB8e0013236e5f3e
|
|
146
|
+
OCEAN / ETH,Ocean Protocol,Crypto,0x9b0FC4bb9981e5333689d69BdBF66351B9861E62
|
|
147
|
+
OGN / ETH,Origin Protocol,Crypto,0x2c881B6f3f6B5ff6C975813F87A4dad0b241C15b
|
|
148
|
+
OHMv2 / ETH,Olympus v2,Crypto,0x9a72298ae3886221820B1c878d12D872087D3a23
|
|
149
|
+
OKB / USD,OKB,Crypto,0x22134617Ae0f6CA8D89451e5Ae091c94f7D743DC
|
|
150
|
+
OM / USD,Mantra DAO,Crypto,0xb9583cfBdEeacd2705546F392E43F8E03eB92216
|
|
151
|
+
OMG / ETH,Omisego,Crypto,0x57C9aB3e56EE4a83752c181f241120a3DBba06a1
|
|
152
|
+
OMG / USD,Omisego,Crypto,0x7D476f061F8212A8C9317D5784e72B4212436E93
|
|
153
|
+
ONT / USD,Ontology,Crypto,0xcDa3708C5c2907FCca52BB3f9d3e4c2028b89319
|
|
154
|
+
ORN / ETH,Orion Protocol,Crypto,0xbA9B2a360eb8aBdb677d6d7f27E12De11AA052ef
|
|
155
|
+
OXT / USD,Orchid Protocol,Crypto,0xd75AAaE4AF0c398ca13e2667Be57AF2ccA8B5de6
|
|
156
|
+
PAXG / ETH,Pax Gold,Crypto,0x9B97304EA12EFed0FAd976FBeCAad46016bf269e
|
|
157
|
+
PERP / ETH,Perpetual Protocol,Crypto,0x3b41D5571468904D4e53b6a8d93A6BaC43f02dC9
|
|
158
|
+
PERP / USD,Perpetual Protocol,Crypto,0x01cE1210Fe8153500F60f7131d63239373D7E26C
|
|
159
|
+
PHA / USD,Phala Network,Crypto,0x2B1248028fe48864c4f1c305E524e2e6702eAFDF
|
|
160
|
+
PHP / USD,Philippines Peso,Forex,0x9481e7ad8BE6BbB22A8B9F7B9fB7588d1df65DF6
|
|
161
|
+
PLA / USD,Playdapp,Crypto,0xbc535B134DdF81fc83254a3D0Ed2C0C60144405E
|
|
162
|
+
RAI / ETH,RAI Reflex Index,Crypto,0x4ad7B025127e89263242aB68F0f9c4E5C033B489
|
|
163
|
+
RARI / ETH,Rarible,Crypto,0x2a784368b1D492f458Bf919389F42c18315765F5
|
|
164
|
+
REN / ETH,Ren,Crypto,0x3147D7203354Dc06D9fd350c7a2437bcA92387a4
|
|
165
|
+
REN / USD,Ren,Crypto,0x0f59666EDE214281e956cb3b2D0d69415AfF4A01
|
|
166
|
+
REP / ETH,Augur,Crypto,0xD4CE430C3b67b3E2F7026D86E7128588629e2455
|
|
167
|
+
REQ / USD,Request Network,Crypto,0x2F05888D185970f178f40610306a0Cc305e52bBF
|
|
168
|
+
RLC / ETH,iExec RLC,Crypto,0x4cba1e1fdc738D0fe8DB3ee07728E2Bc4DA676c6
|
|
169
|
+
RUNE / ETH,THORChain,Crypto,0x875D60C44cfbC38BaA4Eb2dDB76A767dEB91b97e
|
|
170
|
+
SAND / USD,The Sandbox,Crypto,0x35E3f7E558C04cE7eEE1629258EcbbA03B36Ec56
|
|
171
|
+
SGD / USD,Singapore Dollar,Forex,0xe25277fF4bbF9081C75Ab0EB13B4A13a721f3E13
|
|
172
|
+
SHIB / ETH,Shiba Inu,Crypto,0x8dD1CD88F43aF196ae478e91b9F5E4Ac69A97C61
|
|
173
|
+
SNX / ETH,Synthetix Network,Crypto,0x79291A9d692Df95334B1a0B3B4AE6bC606782f8c
|
|
174
|
+
SNX / USD,Synthetix Network,Crypto,0xDC3EA94CD0AC27d9A86C180091e7f78C683d3699
|
|
175
|
+
SOL / USD,Solana,Crypto,0x4ffC43a60e009B551865A93d232E33Fce9f01507
|
|
176
|
+
SPELL / USD,Spell Token,Crypto,0x8c110B94C5f1d347fAcF5E1E938AB2db60E3c9a8
|
|
177
|
+
SRM / ETH,Serum,Crypto,0x050c048c9a0CD0e76f166E2539F87ef2acCEC58f
|
|
178
|
+
STETH / ETH,Lido Staked ETH,Crypto,0x86392dC19c0b719886221c78AB11eb8Cf5c52812
|
|
179
|
+
SUSD / ETH,sUSD (Synthetix),Crypto,0x8e0b7e6062272B5eF4524250bFFF8e5Bd3497757
|
|
180
|
+
SUSHI / ETH,Sushi,Crypto,0xe572CeF69f43c2E488b33924AF04BDacE19079cf
|
|
181
|
+
SUSHI / USD,Sushi,Crypto,0xCc70F09A6CC17553b2E31954cD36E4A2d89501f7
|
|
182
|
+
SXP / USD,Swipe,Crypto,0xFb0CfD6c19e25DB4a08D8a204a387cEa48Cc138f
|
|
183
|
+
TOKE / USD,Tokemak,Crypto,0x104cD02b2f22972E8d8542867a36bDeDA4f104d8
|
|
184
|
+
TOMO / USD,Tomochain,Crypto,0x3d44925a8E9F9DFd90390E58e92Ec16c996A331b
|
|
185
|
+
TRIBE / ETH,Tribe,Crypto,0x84a24deCA415Acc0c395872a9e6a63E27D6225c8
|
|
186
|
+
TRU / USD,Truefi,Crypto,0x26929b85fE284EeAB939831002e1928183a10fb1
|
|
187
|
+
TRY / USD,Turkish Lira,Forex,0xB09fC5fD3f11Cf9eb5E1C5Dba43114e3C9f477b5
|
|
188
|
+
TSLA / USD,Tesla,Equities,0x1ceDaaB50936881B3e449e47e40A2cDAF5576A4a
|
|
189
|
+
TUSD / ETH,TrueUSD,Crypto,0x3886BA987236181D98F2401c507Fb8BeA7871dF2
|
|
190
|
+
TUSD / USD,True USD,Crypto,0xec746eCF986E2927Abd291a2A1716c940100f8Ba
|
|
191
|
+
UMA / ETH,Uma,Crypto,0xf817B69EA583CAFF291E287CaE00Ea329d22765C
|
|
192
|
+
UMEE / ETH,Umee,Crypto,0xa554F3a8D05f22aC7e105311211AAbAf727e1CcB
|
|
193
|
+
UNI / ETH,Uniswap,Crypto,0xD6aA3D25116d8dA79Ea0246c4826EB951872e02e
|
|
194
|
+
UNI / USD,Uniswap,Crypto,0x553303d460EE0afB37EdFf9bE42922D8FF63220e
|
|
195
|
+
USDC / ETH,Circle USD,Crypto,0x986b5E1e1755e3C2440e960477f25201B0a8bbD4
|
|
196
|
+
USDC / USD,Circle USD,Crypto,0x8fFfFfd4AfB6115b954Bd326cbe7B4BA576818f6
|
|
197
|
+
USDK / USD,USDK,Crypto,0xfAC81Ea9Dd29D8E9b212acd6edBEb6dE38Cb43Af
|
|
198
|
+
USDN / USD,Neutrino USD,Crypto,0x7a8544894F7FD0C69cFcBE2b4b2E277B0b9a4355
|
|
199
|
+
USDP / USD,Pax Dollar,Crypto,0x09023c0DA49Aaf8fc3fA3ADF34C6A7016D38D5e3
|
|
200
|
+
USDT / ETH,Tether,Crypto,0xEe9F2375b4bdF6387aa8265dD4FB8F16512A1d46
|
|
201
|
+
USDT / USD,Tether USD,Crypto,0x3E7d1eAB13ad0104d2750B8863b489D65364e32D
|
|
202
|
+
WBTC / BTC,Wrapped Bitcoin,Crypto,0xfdFD9C85aD200c506Cf9e21F1FD8dd01932FBB23
|
|
203
|
+
WING / USD,Wing Finance,Crypto,0x134fE0a225Fb8e6683617C13cEB6B3319fB4fb82
|
|
204
|
+
WNXM / ETH,Wrapped NXM,Crypto,0xe5Dc0A609Ab8bCF15d3f35cFaa1Ff40f521173Ea
|
|
205
|
+
WTI / USD,WTI Crude,Commodities,0xf3584F4dd3b467e73C2339EfD008665a70A4185c
|
|
206
|
+
XAG / USD,Silver,Commodities,0x379589227b15F1a12195D3f2d90bBc9F31f95235
|
|
207
|
+
XAU / USD,Gold,Commodities,0x214eD9Da11D2fbe465a6fc601a91E62EbEc1a0D6
|
|
208
|
+
XCN / USD,Chain,Crypto,0xeb988B77b94C186053282BfcD8B7ED55142D3cAB
|
|
209
|
+
XLM / USD,Stellar,Crypto,0x64168007BAcbB5fF3f52639db22C6300827f5036
|
|
210
|
+
XMR / USD,Monero,Crypto,0xFA66458Cce7Dd15D8650015c4fce4D278271618F
|
|
211
|
+
XRP / USD,Ripple,Crypto,0xCed2660c6Dd1Ffd856A5A82C67f3482d88C50b12
|
|
212
|
+
YFI / ETH,Yearn Finance,Crypto,0x7c5d4F8345e66f68099581Db340cd65B078C41f4
|
|
213
|
+
YFI / USD,Yearn Finance,Crypto,0xA027702dbb89fbd58938e4324ac03B58d812b0E1
|
|
214
|
+
YFII / ETH,YFII Finance,Crypto,0xaaB2f6b45B28E962B3aCd1ee4fC88aEdDf557756
|
|
215
|
+
ZRX / ETH,0x,Crypto,0x2Da4983a622a8498bb1a21FaE9D8F6C664939962
|
|
216
|
+
ZRX / USD,0x,Crypto,0x2885d15b8Af22648b98B122b22FDF4D2a56c6023
|
|
217
|
+
sUSD / USD,sUSD (Synthetix),Crypto,0xad35Bd71b9aFE6e4bDc266B345c198eaDEf9Ad94
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { EthereumDexPrice, GoerliDexPrice } from './dex-price'
|
|
2
|
+
import { ProcessorState } from '@sentio/sdk'
|
|
3
|
+
import { loadTestProvidersFromEnv } from '../test'
|
|
4
|
+
import { expect } from 'chai'
|
|
5
|
+
|
|
6
|
+
describe('dex price tests', () => {
|
|
7
|
+
global.PROCESSOR_STATE = new ProcessorState()
|
|
8
|
+
const haveProviders = loadTestProvidersFromEnv(['1', '5'])
|
|
9
|
+
|
|
10
|
+
const testIf = haveProviders ? test : test.skip
|
|
11
|
+
|
|
12
|
+
testIf('get price at mainnet', async () => {
|
|
13
|
+
const usdc = await EthereumDexPrice.getPrice('usdc', 15677823)
|
|
14
|
+
expect(usdc.price).eq(0.99991649)
|
|
15
|
+
|
|
16
|
+
const compound = await EthereumDexPrice.getPrice('COMP', 15677823)
|
|
17
|
+
expect(compound.price).eq(60.27)
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
testIf('get price at goerli', async () => {
|
|
21
|
+
const dai = await GoerliDexPrice.getPrice('DAI', 7712734)
|
|
22
|
+
expect(dai.price).eq(0.99971281)
|
|
23
|
+
})
|
|
24
|
+
})
|