2018-11-07 21:50:43 +00:00
|
|
|
// VulcanizeDB
|
|
|
|
// Copyright © 2018 Vulcanize
|
|
|
|
|
|
|
|
// This program is free software: you can redistribute it and/or modify
|
|
|
|
// it under the terms of the GNU Affero General Public License as published by
|
|
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
|
|
// (at your option) any later version.
|
|
|
|
|
|
|
|
// This program is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
// GNU Affero General Public License for more details.
|
|
|
|
|
|
|
|
// You should have received a copy of the GNU Affero General Public License
|
|
|
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
2018-05-05 20:25:54 +00:00
|
|
|
|
|
|
|
package constants
|
|
|
|
|
2018-08-27 02:55:09 +00:00
|
|
|
import (
|
2018-12-07 15:38:46 +00:00
|
|
|
"github.com/ethereum/go-ethereum/common"
|
2018-08-28 17:50:53 +00:00
|
|
|
"github.com/vulcanize/vulcanizedb/pkg/core"
|
|
|
|
"github.com/vulcanize/vulcanizedb/pkg/filters"
|
2018-11-23 18:12:24 +00:00
|
|
|
"github.com/vulcanize/vulcanizedb/pkg/omni/shared/helpers"
|
2018-08-27 02:55:09 +00:00
|
|
|
)
|
|
|
|
|
2018-08-31 19:48:43 +00:00
|
|
|
// Event enums
|
|
|
|
type Event int
|
2018-08-27 02:55:09 +00:00
|
|
|
|
2018-08-31 19:48:43 +00:00
|
|
|
const (
|
|
|
|
TransferEvent Event = 0
|
|
|
|
ApprovalEvent Event = 1
|
|
|
|
BurnEvent Event = 2
|
|
|
|
MintEvent Event = 3
|
2018-12-14 17:52:02 +00:00
|
|
|
NewOwnerEvent Event = 4
|
2018-08-31 19:48:43 +00:00
|
|
|
)
|
2018-08-27 02:55:09 +00:00
|
|
|
|
2018-08-31 19:48:43 +00:00
|
|
|
func (e Event) String() string {
|
|
|
|
strings := [...]string{
|
|
|
|
"Transfer",
|
|
|
|
"Approval",
|
|
|
|
"Burn",
|
|
|
|
"Mint",
|
2018-12-14 17:52:02 +00:00
|
|
|
"NewOwner",
|
2018-08-31 19:48:43 +00:00
|
|
|
}
|
2018-08-27 02:55:09 +00:00
|
|
|
|
2018-12-14 17:52:02 +00:00
|
|
|
if e < TransferEvent || e > NewOwnerEvent {
|
2018-08-31 19:48:43 +00:00
|
|
|
return "Unknown"
|
|
|
|
}
|
2018-08-27 02:55:09 +00:00
|
|
|
|
2018-08-31 19:48:43 +00:00
|
|
|
return strings[e]
|
|
|
|
}
|
2018-08-27 02:55:09 +00:00
|
|
|
|
2018-08-31 19:48:43 +00:00
|
|
|
func (e Event) Signature() string {
|
|
|
|
strings := [...]string{
|
2018-11-04 21:26:39 +00:00
|
|
|
helpers.GenerateSignature("Transfer(address,address,uint256)"),
|
|
|
|
helpers.GenerateSignature("Approval(address,address,uint256)"),
|
|
|
|
helpers.GenerateSignature("Burn(address,uint256)"),
|
|
|
|
helpers.GenerateSignature("Mint(address,uint256)"),
|
2018-12-14 17:52:02 +00:00
|
|
|
helpers.GenerateSignature("NewOwner(bytes32,bytes32,address)"),
|
2018-08-27 02:55:09 +00:00
|
|
|
}
|
|
|
|
|
2018-12-14 17:52:02 +00:00
|
|
|
if e < TransferEvent || e > NewOwnerEvent {
|
2018-08-31 19:48:43 +00:00
|
|
|
return "Unknown"
|
2018-08-27 02:55:09 +00:00
|
|
|
}
|
2018-08-31 19:48:43 +00:00
|
|
|
|
|
|
|
return strings[e]
|
2018-08-27 02:55:09 +00:00
|
|
|
}
|
|
|
|
|
2018-08-31 19:48:43 +00:00
|
|
|
// Contract Addresses
|
|
|
|
var DaiContractAddress = "0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359"
|
|
|
|
var TusdContractAddress = "0x8dd5fbCe2F6a956C3022bA3663759011Dd51e73E"
|
2018-12-07 15:38:46 +00:00
|
|
|
var EnsContractAddress = "0x314159265dD8dbb310642f98f50C066173C1259b"
|
2019-01-15 21:49:18 +00:00
|
|
|
var PublicResolverAddress = "0x1da022710dF5002339274AaDEe8D58218e9D6AB5"
|
2018-08-31 19:48:43 +00:00
|
|
|
|
|
|
|
// Contract Owner
|
|
|
|
var DaiContractOwner = "0x0000000000000000000000000000000000000000"
|
|
|
|
var TusdContractOwner = "0x9978d2d229a69b3aef93420d132ab22b44e3578f"
|
|
|
|
|
|
|
|
// Contract Abis
|
|
|
|
var DaiAbiString = `[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"stop","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"guy","type":"address"},{"name":"wad","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"owner_","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"src","type":"address"},{"name":"dst","type":"address"},{"name":"wad","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"guy","type":"address"},{"name":"wad","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"wad","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"name_","type":"bytes32"}],"name":"setName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"src","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stopped","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"authority_","type":"address"}],"name":"setAuthority","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"guy","type":"address"},{"name":"wad","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"wad","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"dst","type":"address"},{"name":"wad","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"dst","type":"address"},{"name":"wad","type":"uint256"}],"name":"push","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"src","type":"address"},{"name":"dst","type":"address"},{"name":"wad","type":"uint256"}],"name":"move","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"start","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"authority","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"guy","type":"address"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"src","type":"address"},{"name":"guy","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability"
|
|
|
|
|
|
|
|
var TusdAbiString = `[{"constant":true,"inputs":[],"name":"burnMin","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"delegateAllowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"burnFeeFlat","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_canReceiveMintWhiteList","type":"address"},{"name":"_canBurnWhiteList","type":"address"},{"name":"_blackList","type":"address"},{"name":"_noFeesList","type":"address"}],"name":"setLists","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"reclaimToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newContract","type":"address"}],"name":"delegateToNewContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_transferFeeNumerator","type":"uint80"},{"name":"_transferFeeDenominator","type":"uint80"},{"name":"_mintFeeNumerator","type":"uint80"},{"name":"_mintFeeDenominator","type":"uint80"},{"name":"_mintFeeFlat","type":"uint256"},{"name":"_burnFeeNumerator","type":"uint80"},{"name":"_burnFeeDenominator","type":"uint80"},{"name":"_burnFeeFlat","type":"uint256"}],"name":"changeStakingFees","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"canReceiveMintWhiteList","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"delegatedFrom","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"},{"name":"origSender","type":"address"}],"name":"delegateApprove","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"contractAddr","type":"address"}],"name":"reclaimContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"allowances","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"who","type":"address"}],"name":"delegateBalanceOf","outputs":[{"name":""
|
2018-08-28 17:50:53 +00:00
|
|
|
|
2018-12-07 15:38:46 +00:00
|
|
|
var ENSAbiString = `[{"constant":true,"inputs":[{"name":"node","type":"bytes32"}],"name":"resolver","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"node","type":"bytes32"}],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"node","type":"bytes32"},{"name":"label","type":"bytes32"},{"name":"owner","type":"address"}],"name":"setSubnodeOwner","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"node","type":"bytes32"},{"name":"ttl","type":"uint64"}],"name":"setTTL","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"node","type":"bytes32"}],"name":"ttl","outputs":[{"name":"","type":"uint64"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"node","type":"bytes32"},{"name":"resolver","type":"address"}],"name":"setResolver","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"node","type":"bytes32"},{"name":"owner","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":false,"name":"owner","type":"address"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":true,"name":"label","type":"bytes32"},{"indexed":false,"name":"owner","type":"address"}],"name":"NewOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":false,"name":"resolver","type":"address"}],"name":"NewResolver","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":false,"name":"ttl","type":"uint64"}],"name":"NewTTL","type":"event"}]`
|
|
|
|
|
|
|
|
// Look-up table for ABI strings
|
|
|
|
var Abis = map[common.Address]string{
|
|
|
|
common.HexToAddress("0x314159265dD8dbb310642f98f50C066173C1259b"): ENSAbiString,
|
|
|
|
common.HexToAddress("0x8dd5fbCe2F6a956C3022bA3663759011Dd51e73E"): TusdAbiString,
|
|
|
|
common.HexToAddress("0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359"): DaiAbiString,
|
|
|
|
}
|
|
|
|
|
2018-08-28 17:50:53 +00:00
|
|
|
// Filters
|
2018-11-03 19:00:25 +00:00
|
|
|
// To add additional filter parameters, filter by other Topics e.g. for a Transfer event filter Topics[1] to filter for a specific 'from' address
|
2018-08-31 19:48:43 +00:00
|
|
|
var DaiERC20Filters = []filters.LogFilter{
|
2018-08-28 17:50:53 +00:00
|
|
|
{
|
2018-08-31 19:48:43 +00:00
|
|
|
Name: TransferEvent.String(),
|
|
|
|
FromBlock: 4752008,
|
2018-08-28 17:50:53 +00:00
|
|
|
ToBlock: -1,
|
|
|
|
Address: DaiContractAddress,
|
2018-08-31 19:48:43 +00:00
|
|
|
Topics: core.Topics{TransferEvent.Signature()},
|
2018-08-28 17:50:53 +00:00
|
|
|
},
|
|
|
|
{
|
2018-08-31 19:48:43 +00:00
|
|
|
Name: ApprovalEvent.String(),
|
|
|
|
FromBlock: 4752008,
|
2018-08-28 17:50:53 +00:00
|
|
|
ToBlock: -1,
|
|
|
|
Address: DaiContractAddress,
|
2018-08-31 19:48:43 +00:00
|
|
|
Topics: core.Topics{ApprovalEvent.Signature()},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
var TusdGenericFilters = []filters.LogFilter{
|
|
|
|
{
|
|
|
|
Name: BurnEvent.String(),
|
|
|
|
FromBlock: 5197514,
|
|
|
|
ToBlock: -1,
|
|
|
|
Address: TusdContractAddress,
|
|
|
|
Topics: core.Topics{BurnEvent.Signature()},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Name: MintEvent.String(),
|
|
|
|
FromBlock: 5197514,
|
|
|
|
ToBlock: -1,
|
|
|
|
Address: TusdContractAddress,
|
|
|
|
Topics: core.Topics{MintEvent.Signature()},
|
2018-08-28 17:50:53 +00:00
|
|
|
},
|
|
|
|
}
|