Skip to content

Commit

Permalink
Free Pertsev!
Browse files Browse the repository at this point in the history
  • Loading branch information
bokkypoobah committed Jun 27, 2024
1 parent 296503e commit bfc2680
Show file tree
Hide file tree
Showing 2 changed files with 120 additions and 8 deletions.
26 changes: 24 additions & 2 deletions docs/functions.js
Original file line number Diff line number Diff line change
Expand Up @@ -489,10 +489,13 @@ const VALID_ENS_CONTRACTS = {
"0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85": true,
"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e": true,
"0x231b0Ee14048e9dCcD1d247744d114a4EB5E8E63": true,
"0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85": true,
};

function processENSEventLogs(logs) {
// console.log("processENSEventLogs - logs: " + JSON.stringify(logs, null, 2));
const erc721Interface = new ethers.utils.Interface(ERC721ABI);
const erc1155Interface = new ethers.utils.Interface(ERC1155ABI);
// const oldETHRegistarController1Interface = new ethers.utils.Interface(ENS_OLDETHREGISTRARCONTROLLER1_ABI);
// const oldETHRegistarController2Interface = new ethers.utils.Interface(ENS_OLDETHREGISTRARCONTROLLER2_ABI);
const ethBaseRegistarImplementationInterface = new ethers.utils.Interface(ENS_BASEREGISTRARIMPLEMENTATION_ABI);
Expand All @@ -508,7 +511,26 @@ function processENSEventLogs(logs) {
const contract = log.address;
let eventRecord = null;
if (contract in VALID_ENS_CONTRACTS) {
if (log.topics[0] == "0xb3d987963d01b2f68493b4bdb130988f157ea43070d4ad840fee0466ed9370d9") {
if (log.topics[0] == "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef") {
// Transfer (index_topic_1 address from, index_topic_2 address to, index_topic_3 uint256 id)
const logData = ethBaseRegistarImplementationInterface.parseLog(log);
const [from, to, tokenId] = logData.args;
eventRecord = { type: "Transfer", from, to, tokenId: tokenId.toString() };

} else if (log.topics[0] == "0xc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62") {
// ERC-1155 TransferSingle (index_topic_1 address operator, index_topic_2 address from, index_topic_3 address to, uint256 id, uint256 value)
const logData = erc1155Interface.parseLog(log);
const [operator, from, to, id, value] = logData.args;
tokenId = ethers.BigNumber.from(id).toString();
eventRecord = { type: "TransferSingle", operator, from, to, tokenId, value: value.toString(), eventType: "erc1155" };
} else if (log.topics[0] == "0x4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb") {
// ERC-1155 TransferBatch (index_topic_1 address operator, index_topic_2 address from, index_topic_3 address to, uint256[] ids, uint256[] values)
const logData = erc1155Interface.parseLog(log);
const [operator, from, to, ids, values] = logData.args;
const tokenIds = ids.map(e => ethers.BigNumber.from(e).toString());
eventRecord = { type: "TransferBatch", operator, from, to, tokenIds, values: values.map(e => e.toString()), eventType: "erc1155" };

} else if (log.topics[0] == "0xb3d987963d01b2f68493b4bdb130988f157ea43070d4ad840fee0466ed9370d9") {
// NameRegistered (index_topic_1 uint256 id, index_topic_2 address owner, uint256 expires)
const logData = ethBaseRegistarImplementationInterface.parseLog(log);
const [labelhash, owner, expires] = logData.args;
Expand Down Expand Up @@ -604,6 +626,6 @@ function processENSEventLogs(logs) {
}
}
}
console.log("processENSEventLogs - records: " + JSON.stringify(records, null, 2));
// console.log("processENSEventLogs - records: " + JSON.stringify(records, null, 2));
return records;
}
102 changes: 96 additions & 6 deletions docs/viewName.js
Original file line number Diff line number Diff line change
Expand Up @@ -333,12 +333,13 @@ const viewNameModule = {
if (!(event.blockNumber in state.events)) {
Vue.set(state.events, event.blockNumber, {});
}
if (!(event.logIndex in state.events[event.blockNumber])) {
Vue.set(state.events[event.blockNumber], event.logIndex, {});
if (!(event.txIndex in state.events[event.blockNumber])) {
Vue.set(state.events[event.blockNumber], event.txIndex, {});
}
Vue.set(state.events[event.blockNumber], event.logIndex, {
Vue.set(state.events[event.blockNumber][event.txIndex], event.logIndex, {
...event,
blockNumber: undefined,
txIndex: undefined,
logIndex: undefined,
});
}
Expand Down Expand Up @@ -405,6 +406,8 @@ const viewNameModule = {
const erc1155TokenId = ethers.utils.namehash(info.label + ".eth");
const fromBlock = 0;
const toBlock = blockNumber;

// ENS Events
try {
const topics = [[
'0xb3d987963d01b2f68493b4bdb130988f157ea43070d4ad840fee0466ed9370d9', // NameRegistered (index_topic_1 uint256 id, index_topic_2 address owner, uint256 expires)
Expand All @@ -427,16 +430,103 @@ const viewNameModule = {
[ erc721TokenId, erc1155TokenId ],
null
];
// console.log("topics: " + JSON.stringify(topics, null, 2));
const logs = await provider.getLogs({ address: null, fromBlock, toBlock, topics });
// console.log("logs: " + JSON.stringify(logs, null, 2));
// await processLogs(fromBlock, toBlock, logs);
const events = processENSEventLogs(logs);
await context.commit('addEvents', events);
} catch (e) {
logInfo("viewNameModule", "actions.loadENSEvents.getLogs - ERROR fromBlock: " + fromBlock + ", toBlock: " + toBlock + " " + e.message);
}

// ERC-721 Transfers
try {
const topics = [[
'0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', // Transfer (index_topic_1 address from, index_topic_2 address to, index_topic_3 uint256 id)
],
null,
null,
erc721TokenId,
];
const logs = await provider.getLogs({ address: null, fromBlock, toBlock, topics });
const events = processENSEventLogs(logs);
await context.commit('addEvents', events);
} catch (e) {
logInfo("viewNameModule", "actions.loadENSEvents.getLogs - ERROR fromBlock: " + fromBlock + ", toBlock: " + toBlock + " " + e.message);
}

// ERC-1155 TransferSingle (index_topic_1 address operator, index_topic_2 address from, index_topic_3 address to, uint256 id, uint256 value)
// [ '0xc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62', null, accountAs32Bytes, null ],
// [ '0xc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62', null, null, accountAs32Bytes ],

// ERC-1155 TransferBatch (index_topic_1 address operator, index_topic_2 address from, index_topic_3 address to, uint256[] ids, uint256[] values)
// [ '0x4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb', null, accountAs32Bytes, null ],
// [ '0x4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb', null, null, accountAs32Bytes ],

const selectedAddresses = [];
for (const [address, addressData] of Object.entries(store.getters['data/addresses'] || {})) {
if (address.substring(0, 2) == "0x" && addressData.process) {
selectedAddresses.push('0x000000000000000000000000' + address.substring(2, 42).toLowerCase());
}
}
console.log("selectedAddresses: " + JSON.stringify(selectedAddresses));

const erc1155TokenIdDecimals = ethers.BigNumber.from(erc1155TokenId).toString();

// ERC-1155 Transfers To My Account
try {
const topics = [[
'0xc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62', // TransferSingle (index_topic_1 address operator, index_topic_2 address from, index_topic_3 address to, uint256 id, uint256 value)
'0x4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb', // TransferBatch (index_topic_1 address operator, index_topic_2 address from, index_topic_3 address to, uint256[] ids, uint256[] values)
],
null,
null,
selectedAddresses,
];
const logs = await provider.getLogs({ address: ENS_NAMEWRAPPER_ADDRESS, fromBlock, toBlock, topics });
const events = processENSEventLogs(logs);

const selectedEvents = [];
for (const event of events) {
if (event.type == "TransferSingle" && event.tokenId == erc1155TokenIdDecimals) {
// console.log("event: " + JSON.stringify(event, null, 2));
selectedEvents.push(event);
} else if (event.type == "TransferBatch") {
// TODO: Handle this
}
}

await context.commit('addEvents', selectedEvents);
} catch (e) {
logInfo("viewNameModule", "actions.loadENSEvents.getLogs - ERROR fromBlock: " + fromBlock + ", toBlock: " + toBlock + " " + e.message);
}

// ERC-1155 Transfers From My Account
try {
const topics = [[
'0xc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62', // TransferSingle (index_topic_1 address operator, index_topic_2 address from, index_topic_3 address to, uint256 id, uint256 value)
'0x4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb', // TransferBatch (index_topic_1 address operator, index_topic_2 address from, index_topic_3 address to, uint256[] ids, uint256[] values)
],
null,
selectedAddresses,
];
const logs = await provider.getLogs({ address: ENS_NAMEWRAPPER_ADDRESS, fromBlock, toBlock, topics });
const events = processENSEventLogs(logs);

const selectedEvents = [];
for (const event of events) {
// console.log("event.tokenId: " + event.tokenId + " vs " + erc1155TokenIdDecimals);
if (event.type == "TransferSingle" && event.tokenId == erc1155TokenIdDecimals) {
// console.log("event: " + JSON.stringify(event, null, 2));
selectedEvents.push(event);
} else if (event.type == "TransferBatch") {
// TODO: Handle this
}
}

await context.commit('addEvents', selectedEvents);
} catch (e) {
logInfo("viewNameModule", "actions.loadENSEvents.getLogs - ERROR fromBlock: " + fromBlock + ", toBlock: " + toBlock + " " + e.message);
}

// // 2nd parameter with tokenId
//
// const erc721TokenIdDecimals = ethers.BigNumber.from(erc721TokenId).toString();
Expand Down

0 comments on commit bfc2680

Please sign in to comment.