mirror of
https://github.com/Instadapp/compound-dsa-managers.git
synced 2024-07-29 21:48:19 +00:00
graph added
This commit is contained in:
parent
fd68056446
commit
84b52e23ca
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
build
|
||||
generated
|
||||
node_modules
|
||||
112
abis/InstaList.json
Normal file
112
abis/InstaList.json
Normal file
|
|
@ -0,0 +1,112 @@
|
|||
[
|
||||
{
|
||||
"inputs": [
|
||||
{ "internalType": "address", "name": "_instaIndex", "type": "address" }
|
||||
],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "constructor"
|
||||
},
|
||||
{
|
||||
"inputs": [{ "internalType": "uint64", "name": "", "type": "uint64" }],
|
||||
"name": "accountAddr",
|
||||
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [{ "internalType": "address", "name": "", "type": "address" }],
|
||||
"name": "accountID",
|
||||
"outputs": [{ "internalType": "uint64", "name": "", "type": "uint64" }],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [{ "internalType": "uint64", "name": "", "type": "uint64" }],
|
||||
"name": "accountLink",
|
||||
"outputs": [
|
||||
{ "internalType": "address", "name": "first", "type": "address" },
|
||||
{ "internalType": "address", "name": "last", "type": "address" },
|
||||
{ "internalType": "uint64", "name": "count", "type": "uint64" }
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{ "internalType": "uint64", "name": "", "type": "uint64" },
|
||||
{ "internalType": "address", "name": "", "type": "address" }
|
||||
],
|
||||
"name": "accountList",
|
||||
"outputs": [
|
||||
{ "internalType": "address", "name": "prev", "type": "address" },
|
||||
{ "internalType": "address", "name": "next", "type": "address" }
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "accounts",
|
||||
"outputs": [{ "internalType": "uint64", "name": "", "type": "uint64" }],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{ "internalType": "address", "name": "_owner", "type": "address" }
|
||||
],
|
||||
"name": "addAuth",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{ "internalType": "address", "name": "_account", "type": "address" }
|
||||
],
|
||||
"name": "init",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "instaIndex",
|
||||
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{ "internalType": "address", "name": "_owner", "type": "address" }
|
||||
],
|
||||
"name": "removeAuth",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [{ "internalType": "address", "name": "", "type": "address" }],
|
||||
"name": "userLink",
|
||||
"outputs": [
|
||||
{ "internalType": "uint64", "name": "first", "type": "uint64" },
|
||||
{ "internalType": "uint64", "name": "last", "type": "uint64" },
|
||||
{ "internalType": "uint64", "name": "count", "type": "uint64" }
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{ "internalType": "address", "name": "", "type": "address" },
|
||||
{ "internalType": "uint64", "name": "", "type": "uint64" }
|
||||
],
|
||||
"name": "userList",
|
||||
"outputs": [
|
||||
{ "internalType": "uint64", "name": "prev", "type": "uint64" },
|
||||
{ "internalType": "uint64", "name": "next", "type": "uint64" }
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
}
|
||||
]
|
||||
|
|
@ -112,5 +112,317 @@
|
|||
"stateMutability": "payable",
|
||||
"type": "function"
|
||||
},
|
||||
{ "stateMutability": "payable", "type": "receive" }
|
||||
{ "stateMutability": "payable", "type": "receive" },
|
||||
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"components": [
|
||||
{ "internalType": "bytes32", "name": "name32", "type": "bytes32" },
|
||||
{ "internalType": "bytes32", "name": "symbol32", "type": "bytes32" }
|
||||
],
|
||||
"internalType": "struct CometConfiguration.ExtConfiguration",
|
||||
"name": "config",
|
||||
"type": "tuple"
|
||||
}
|
||||
],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "constructor"
|
||||
},
|
||||
{ "inputs": [], "name": "BadAmount", "type": "error" },
|
||||
{ "inputs": [], "name": "BadNonce", "type": "error" },
|
||||
{ "inputs": [], "name": "BadSignatory", "type": "error" },
|
||||
{ "inputs": [], "name": "InvalidInt104", "type": "error" },
|
||||
{ "inputs": [], "name": "InvalidInt256", "type": "error" },
|
||||
{ "inputs": [], "name": "InvalidUInt104", "type": "error" },
|
||||
{ "inputs": [], "name": "InvalidUInt128", "type": "error" },
|
||||
{ "inputs": [], "name": "InvalidUInt64", "type": "error" },
|
||||
{ "inputs": [], "name": "InvalidValueS", "type": "error" },
|
||||
{ "inputs": [], "name": "InvalidValueV", "type": "error" },
|
||||
{ "inputs": [], "name": "NegativeNumber", "type": "error" },
|
||||
{ "inputs": [], "name": "SignatureExpired", "type": "error" },
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": true,
|
||||
"internalType": "address",
|
||||
"name": "owner",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": true,
|
||||
"internalType": "address",
|
||||
"name": "spender",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "amount",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "Approval",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{ "internalType": "address", "name": "manager", "type": "address" },
|
||||
{ "internalType": "bool", "name": "isAllowed_", "type": "bool" }
|
||||
],
|
||||
"name": "allow",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{ "internalType": "address", "name": "owner", "type": "address" },
|
||||
{ "internalType": "address", "name": "manager", "type": "address" },
|
||||
{ "internalType": "bool", "name": "isAllowed_", "type": "bool" },
|
||||
{ "internalType": "uint256", "name": "nonce", "type": "uint256" },
|
||||
{ "internalType": "uint256", "name": "expiry", "type": "uint256" },
|
||||
{ "internalType": "uint8", "name": "v", "type": "uint8" },
|
||||
{ "internalType": "bytes32", "name": "r", "type": "bytes32" },
|
||||
{ "internalType": "bytes32", "name": "s", "type": "bytes32" }
|
||||
],
|
||||
"name": "allowBySig",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{ "internalType": "address", "name": "owner", "type": "address" },
|
||||
{ "internalType": "address", "name": "spender", "type": "address" }
|
||||
],
|
||||
"name": "allowance",
|
||||
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{ "internalType": "address", "name": "spender", "type": "address" },
|
||||
{ "internalType": "uint256", "name": "amount", "type": "uint256" }
|
||||
],
|
||||
"name": "approve",
|
||||
"outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "baseAccrualScale",
|
||||
"outputs": [{ "internalType": "uint64", "name": "", "type": "uint64" }],
|
||||
"stateMutability": "pure",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "baseIndexScale",
|
||||
"outputs": [{ "internalType": "uint64", "name": "", "type": "uint64" }],
|
||||
"stateMutability": "pure",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{ "internalType": "address", "name": "account", "type": "address" }
|
||||
],
|
||||
"name": "baseTrackingAccrued",
|
||||
"outputs": [{ "internalType": "uint64", "name": "", "type": "uint64" }],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{ "internalType": "address", "name": "account", "type": "address" },
|
||||
{ "internalType": "address", "name": "asset", "type": "address" }
|
||||
],
|
||||
"name": "collateralBalanceOf",
|
||||
"outputs": [{ "internalType": "uint128", "name": "", "type": "uint128" }],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "factorScale",
|
||||
"outputs": [{ "internalType": "uint64", "name": "", "type": "uint64" }],
|
||||
"stateMutability": "pure",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{ "internalType": "address", "name": "owner", "type": "address" },
|
||||
{ "internalType": "address", "name": "manager", "type": "address" }
|
||||
],
|
||||
"name": "hasPermission",
|
||||
"outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{ "internalType": "address", "name": "", "type": "address" },
|
||||
{ "internalType": "address", "name": "", "type": "address" }
|
||||
],
|
||||
"name": "isAllowed",
|
||||
"outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [{ "internalType": "address", "name": "", "type": "address" }],
|
||||
"name": "liquidatorPoints",
|
||||
"outputs": [
|
||||
{ "internalType": "uint32", "name": "numAbsorbs", "type": "uint32" },
|
||||
{ "internalType": "uint64", "name": "numAbsorbed", "type": "uint64" },
|
||||
{ "internalType": "uint128", "name": "approxSpend", "type": "uint128" },
|
||||
{ "internalType": "uint32", "name": "_reserved", "type": "uint32" }
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "maxAssets",
|
||||
"outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }],
|
||||
"stateMutability": "pure",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "name",
|
||||
"outputs": [{ "internalType": "string", "name": "", "type": "string" }],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "priceScale",
|
||||
"outputs": [{ "internalType": "uint64", "name": "", "type": "uint64" }],
|
||||
"stateMutability": "pure",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "symbol",
|
||||
"outputs": [{ "internalType": "string", "name": "", "type": "string" }],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "totalsBasic",
|
||||
"outputs": [
|
||||
{
|
||||
"components": [
|
||||
{
|
||||
"internalType": "uint64",
|
||||
"name": "baseSupplyIndex",
|
||||
"type": "uint64"
|
||||
},
|
||||
{
|
||||
"internalType": "uint64",
|
||||
"name": "baseBorrowIndex",
|
||||
"type": "uint64"
|
||||
},
|
||||
{
|
||||
"internalType": "uint64",
|
||||
"name": "trackingSupplyIndex",
|
||||
"type": "uint64"
|
||||
},
|
||||
{
|
||||
"internalType": "uint64",
|
||||
"name": "trackingBorrowIndex",
|
||||
"type": "uint64"
|
||||
},
|
||||
{
|
||||
"internalType": "uint104",
|
||||
"name": "totalSupplyBase",
|
||||
"type": "uint104"
|
||||
},
|
||||
{
|
||||
"internalType": "uint104",
|
||||
"name": "totalBorrowBase",
|
||||
"type": "uint104"
|
||||
},
|
||||
{
|
||||
"internalType": "uint40",
|
||||
"name": "lastAccrualTime",
|
||||
"type": "uint40"
|
||||
},
|
||||
{ "internalType": "uint8", "name": "pauseFlags", "type": "uint8" }
|
||||
],
|
||||
"internalType": "struct CometStorage.TotalsBasic",
|
||||
"name": "",
|
||||
"type": "tuple"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [{ "internalType": "address", "name": "", "type": "address" }],
|
||||
"name": "totalsCollateral",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "uint128",
|
||||
"name": "totalSupplyAsset",
|
||||
"type": "uint128"
|
||||
},
|
||||
{ "internalType": "uint128", "name": "_reserved", "type": "uint128" }
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [{ "internalType": "address", "name": "", "type": "address" }],
|
||||
"name": "userBasic",
|
||||
"outputs": [
|
||||
{ "internalType": "int104", "name": "principal", "type": "int104" },
|
||||
{
|
||||
"internalType": "uint64",
|
||||
"name": "baseTrackingIndex",
|
||||
"type": "uint64"
|
||||
},
|
||||
{
|
||||
"internalType": "uint64",
|
||||
"name": "baseTrackingAccrued",
|
||||
"type": "uint64"
|
||||
},
|
||||
{ "internalType": "uint16", "name": "assetsIn", "type": "uint16" },
|
||||
{ "internalType": "uint8", "name": "_reserved", "type": "uint8" }
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{ "internalType": "address", "name": "", "type": "address" },
|
||||
{ "internalType": "address", "name": "", "type": "address" }
|
||||
],
|
||||
"name": "userCollateral",
|
||||
"outputs": [
|
||||
{ "internalType": "uint128", "name": "balance", "type": "uint128" },
|
||||
{ "internalType": "uint128", "name": "_reserved", "type": "uint128" }
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [{ "internalType": "address", "name": "", "type": "address" }],
|
||||
"name": "userNonce",
|
||||
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "version",
|
||||
"outputs": [{ "internalType": "string", "name": "", "type": "string" }],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
}
|
||||
]
|
||||
|
|
|
|||
|
|
@ -1,6 +1,41 @@
|
|||
type ExampleEntity @entity {
|
||||
type Owner @entity {
|
||||
id: ID!
|
||||
count: BigInt!
|
||||
previousAdmin: Bytes! # address
|
||||
newAdmin: Bytes! # address
|
||||
address: Bytes!
|
||||
manager: [Manager!]! @derivedFrom(field: "owner")
|
||||
}
|
||||
|
||||
type Manager @entity {
|
||||
id: ID!
|
||||
address: Bytes!
|
||||
owner: Owner!
|
||||
isAllowed: Boolean!
|
||||
isDSA: Boolean!
|
||||
transactionData: TransactionData!
|
||||
}
|
||||
|
||||
type TransactionData @entity {
|
||||
# transaction hash
|
||||
id: ID!
|
||||
# transaction index
|
||||
txnIndex: BigInt!
|
||||
# transaction log index
|
||||
txnLogIndex: BigInt!
|
||||
# from
|
||||
from: Bytes!
|
||||
# to
|
||||
to: Bytes
|
||||
# input
|
||||
input: Bytes!
|
||||
# block number
|
||||
blockNumber: BigInt!
|
||||
# timestamp
|
||||
timestamp: BigInt!
|
||||
# gas
|
||||
blockGasUsed: BigInt!
|
||||
#gas price
|
||||
gasPrice: BigInt!
|
||||
# gas limit
|
||||
gasLimit: BigInt!
|
||||
#value
|
||||
value: BigInt!
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,55 +0,0 @@
|
|||
import { BigInt } from "@graphprotocol/graph-ts"
|
||||
import {
|
||||
cUSDCv3,
|
||||
AdminChanged,
|
||||
BeaconUpgraded,
|
||||
Upgraded
|
||||
} from "../generated/cUSDCv3/cUSDCv3"
|
||||
import { ExampleEntity } from "../generated/schema"
|
||||
|
||||
export function handleAdminChanged(event: AdminChanged): void {
|
||||
// Entities can be loaded from the store using a string ID; this ID
|
||||
// needs to be unique across all entities of the same type
|
||||
let entity = ExampleEntity.load(event.transaction.from.toHex())
|
||||
|
||||
// Entities only exist after they have been saved to the store;
|
||||
// `null` checks allow to create entities on demand
|
||||
if (!entity) {
|
||||
entity = new ExampleEntity(event.transaction.from.toHex())
|
||||
|
||||
// Entity fields can be set using simple assignments
|
||||
entity.count = BigInt.fromI32(0)
|
||||
}
|
||||
|
||||
// BigInt and BigDecimal math are supported
|
||||
entity.count = entity.count + BigInt.fromI32(1)
|
||||
|
||||
// Entity fields can be set based on event parameters
|
||||
entity.previousAdmin = event.params.previousAdmin
|
||||
entity.newAdmin = event.params.newAdmin
|
||||
|
||||
// Entities can be written to the store with `.save()`
|
||||
entity.save()
|
||||
|
||||
// Note: If a handler doesn't require existing field values, it is faster
|
||||
// _not_ to load the entity from the store. Instead, create it fresh with
|
||||
// `new Entity(...)`, set the fields that should be updated and save the
|
||||
// entity back to the store. Fields that were not set or unset remain
|
||||
// unchanged, allowing for partial updates to be applied.
|
||||
|
||||
// It is also possible to access smart contracts from mappings. For
|
||||
// example, the contract that has emitted the event can be connected to
|
||||
// with:
|
||||
//
|
||||
// let contract = Contract.bind(event.address)
|
||||
//
|
||||
// The following functions can then be called on this contract to access
|
||||
// state variables and other data:
|
||||
//
|
||||
// - contract.admin(...)
|
||||
// - contract.implementation(...)
|
||||
}
|
||||
|
||||
export function handleBeaconUpgraded(event: BeaconUpgraded): void {}
|
||||
|
||||
export function handleUpgraded(event: Upgraded): void {}
|
||||
38
src/compound-v3-managers.ts
Normal file
38
src/compound-v3-managers.ts
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
import {
|
||||
cUSDCv3,
|
||||
Approval
|
||||
} from "../generated/cUSDCv3/cUSDCv3"
|
||||
import { createOrLoadManager, createOrLoadOwner, createOrLoadTransaction, isDSA, ZERO } from "./utils";
|
||||
|
||||
export function handleManagerToggled(event: Approval): void {
|
||||
let ownerID = event.params.owner.toHexString();
|
||||
let managerID = event.params.spender.toHexString() + "#" + event.params.owner.toHexString();
|
||||
let transactionID = event.transaction.hash.toHexString() + "#" + event.logIndex.toString();
|
||||
|
||||
let transactionData = createOrLoadTransaction(transactionID);
|
||||
transactionData.txnIndex = event.transaction.index;
|
||||
transactionData.txnLogIndex = event.transactionLogIndex;
|
||||
transactionData.from = event.transaction.from;
|
||||
transactionData.to = event.transaction.to;
|
||||
transactionData.input = event.transaction.input;
|
||||
transactionData.blockNumber = event.block.number;
|
||||
transactionData.timestamp = event.block.timestamp;
|
||||
transactionData.gasLimit = event.block.gasLimit;
|
||||
transactionData.blockGasUsed = event.block.gasUsed;
|
||||
transactionData.gasPrice = event.transaction.gasPrice;
|
||||
transactionData.value = event.transaction.value;
|
||||
|
||||
let manager = createOrLoadManager(managerID);
|
||||
manager.address = event.params.spender;
|
||||
manager.isAllowed = event.params.amount == ZERO ? false : true;
|
||||
manager.owner = ownerID;
|
||||
manager.isDSA = isDSA(event.params.spender);
|
||||
manager.transactionData = transactionID;
|
||||
|
||||
let owner = createOrLoadOwner(ownerID);
|
||||
owner.address = event.params.owner;
|
||||
|
||||
transactionData.save();
|
||||
manager.save();
|
||||
owner.save();
|
||||
}
|
||||
65
src/utils.ts
Normal file
65
src/utils.ts
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
import {
|
||||
Address,
|
||||
BigInt,
|
||||
Bytes,
|
||||
DataSourceContext,
|
||||
} from "@graphprotocol/graph-ts";
|
||||
import { Approval } from "../generated/cUSDCv3/cUSDCv3";
|
||||
import { TransactionData, Owner, Manager } from "../generated/schema";
|
||||
import { InstaList } from "../generated/cUSDCv3/InstaList";
|
||||
|
||||
export const ZERO = new BigInt(0);
|
||||
|
||||
export function isDSA(account: Address): boolean {
|
||||
let listAddress = Address.fromBytes(
|
||||
Address.fromHexString("0x4c8a1BEb8a87765788946D6B19C6C6355194AbEb")
|
||||
);
|
||||
let instaList = InstaList.bind(listAddress);
|
||||
|
||||
let isDSA = instaList.accountID(account) == ZERO ? false : true;
|
||||
return isDSA;
|
||||
}
|
||||
|
||||
//loads or creates smart owner
|
||||
export function createOrLoadOwner(id: string): Owner {
|
||||
let account = Owner.load(id);
|
||||
if (account == null) {
|
||||
account = new Owner(id);
|
||||
account.address = new Address(0);
|
||||
}
|
||||
return account;
|
||||
}
|
||||
|
||||
//loads or creates smart owner
|
||||
export function createOrLoadManager(id: string): Manager {
|
||||
let account = Manager.load(id);
|
||||
if (account == null) {
|
||||
account = new Manager(id);
|
||||
account.address = new Address(0);
|
||||
account.owner = "";
|
||||
account.isAllowed = false;
|
||||
account.isDSA = false;
|
||||
account.transactionData = "";
|
||||
}
|
||||
return account;
|
||||
}
|
||||
|
||||
//creates instance for new transaction or loads existing one
|
||||
export function createOrLoadTransaction(id: string): TransactionData {
|
||||
let txn = TransactionData.load(id);
|
||||
if (txn == null) {
|
||||
txn = new TransactionData(id);
|
||||
txn.txnIndex = ZERO;
|
||||
txn.txnLogIndex = ZERO;
|
||||
txn.from = new Address(0);
|
||||
txn.to = new Address(0);
|
||||
txn.input = new Bytes(0);
|
||||
txn.blockNumber = ZERO;
|
||||
txn.timestamp = ZERO;
|
||||
txn.blockGasUsed = ZERO;
|
||||
txn.gasLimit = ZERO;
|
||||
txn.gasPrice = ZERO;
|
||||
txn.value = ZERO;
|
||||
}
|
||||
return txn;
|
||||
}
|
||||
|
|
@ -1,29 +1,28 @@
|
|||
specVersion: 0.0.1
|
||||
specVersion: 0.0.5
|
||||
schema:
|
||||
file: ./schema.graphql
|
||||
dataSources:
|
||||
- kind: ethereum
|
||||
name: undefined
|
||||
name: cUSDCv3
|
||||
network: mainnet
|
||||
source:
|
||||
address: "0xc3d688B66703497DAA19211EEdff47f25384cdc3"
|
||||
abi: cUSDCv3
|
||||
startBlock: 15331500
|
||||
mapping:
|
||||
kind: ethereum/events
|
||||
apiVersion: 0.0.5
|
||||
language: wasm/assemblyscript
|
||||
entities:
|
||||
- AdminChanged
|
||||
- BeaconUpgraded
|
||||
- Upgraded
|
||||
- Owner
|
||||
- Manager
|
||||
- Transaction
|
||||
abis:
|
||||
- name: cUSDCv3
|
||||
file: ./abis/cUSDCv3.json
|
||||
- name: InstaList
|
||||
file: ./abis/InstaList.json
|
||||
eventHandlers:
|
||||
- event: AdminChanged(address,address)
|
||||
handler: handleAdminChanged
|
||||
- event: BeaconUpgraded(indexed address)
|
||||
handler: handleBeaconUpgraded
|
||||
- event: Upgraded(indexed address)
|
||||
handler: handleUpgraded
|
||||
file: ./src/c-usd-cv-3.ts
|
||||
- event: Approval(indexed address,indexed address,uint256)
|
||||
handler: handleManagerToggled
|
||||
file: ./src/compound-v3-managers.ts
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user