avalance + beefy vault v6
This commit is contained in:
parent
923903d9f5
commit
5e4a267948
30
avalanche/client.go
Normal file
30
avalanche/client.go
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
package avalanche
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"git.lehouerou.net/laurent/evm"
|
||||||
|
"github.com/pkg/errors"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
RpcUrl = "https://api.avax.network/ext/bc/C/rpc"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Client struct {
|
||||||
|
evm.Client
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewClientWithUrl(ctx context.Context, rpcurl string, privatekey string, options ...evm.ClientOption) (*Client, error) {
|
||||||
|
ethclient, err := evm.NewClient(ctx, rpcurl, privatekey, NewTokenMapper(), options...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Wrap(err, "creating ethereum client")
|
||||||
|
}
|
||||||
|
return &Client{
|
||||||
|
ethclient,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewClient(ctx context.Context, privatekey string, options ...evm.ClientOption) (*Client, error) {
|
||||||
|
return NewClientWithUrl(ctx, RpcUrl, privatekey, options...)
|
||||||
|
}
|
76
avalanche/tokenmapper.go
Normal file
76
avalanche/tokenmapper.go
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
package avalanche
|
||||||
|
|
||||||
|
import (
|
||||||
|
"git.lehouerou.net/laurent/evm"
|
||||||
|
"github.com/ethereum/go-ethereum/common"
|
||||||
|
)
|
||||||
|
|
||||||
|
var tokens = map[string]string{
|
||||||
|
"ANY": "0xb44a9b6905af7c801311e8f4e76932ee959c663c",
|
||||||
|
"AVE": "0x78ea17559b3d2cf85a7f9c2c704eda119db5e6de",
|
||||||
|
"AVXT": "0x397bbd6a0e41bdf4c3f971731e180db8ad06ebc1",
|
||||||
|
"BAG": "0xa1144a6a1304bd9cbb16c800f7a867508726566e",
|
||||||
|
"BIFI": "0xd6070ae98b8069de6b494332d1a1a81b6179d960",
|
||||||
|
"BLIZZ": "0xb147656604217a03fe2c73c4838770df8d9d21b8",
|
||||||
|
"DAI.e": "0xd586e7f844cea2f87f50152665bcbc2c279d8d70",
|
||||||
|
"DYP": "0x961c8c0b1aad0c0b10a51fef6a867e3091bcef17",
|
||||||
|
"ELK": "0xe1c110e1b1b4a1ded0caf3e42bfbdbb7b5d7ce1c",
|
||||||
|
"FRAX": "0xd24c2ad096400b6fbcd2ad8b24e7acbc21a1da64",
|
||||||
|
"FXS": "0x214db107654ff987ad859f34125307783fc8e387",
|
||||||
|
"GAJ": "0x595c8481c48894771ce8fade54ac6bf59093f9e8",
|
||||||
|
"HCT": "0x45c13620b55c35a5f539d26e88247011eb10fdbd",
|
||||||
|
"HUSKY": "0x65378b697853568da9ff8eab60c13e1ee9f4a654",
|
||||||
|
"JOE": "0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd",
|
||||||
|
"KLO": "0xb27c8941a7df8958a1778c0259f76d1f8b711c35",
|
||||||
|
"LINK.e": "0x5947bb275c521040051d82396192181b413227a3",
|
||||||
|
"MFI": "0x9fda7ceec4c18008096c2fe2b85f05dc300f94d0",
|
||||||
|
"MIM": "0x130966628846bfd36ff31a822705796e8cb8c18d",
|
||||||
|
"NFTD": "0x8e0fe2947752be0d5acf73aae77362daf79cb379",
|
||||||
|
"OH": "0x937e077abaea52d3abf879c9b9d3f2ebd15baa21",
|
||||||
|
"OOE": "0x0ebd9537a25f56713e34c45b38f421a1e7191469",
|
||||||
|
"PEFI": "0xe896cdeaac9615145c0ca09c8cd5c25bced6384c",
|
||||||
|
"PENDLE": "0xfb98b335551a418cd0737375a2ea0ded62ea213b",
|
||||||
|
"PNG": "0x60781c2586d68229fde47564546784ab3faca982",
|
||||||
|
"QI": "0x8729438eb15e2c8b576fcc6aecda6a148776c0f5",
|
||||||
|
"RAI": "0x97cd1cfe2ed5712660bb6c14053c0ecb031bff7d",
|
||||||
|
"SHIBX": "0x440abbf18c54b2782a4917b80a1746d3a2c2cce1",
|
||||||
|
"SMRT": "0xcc2f1d827b18321254223df4e84de399d9ff116c",
|
||||||
|
"SMRTr": "0x6d923f688c7ff287dc3a5943caeefc994f97b290",
|
||||||
|
"SNOB": "0xc38f41a296a4493ff429f1238e030924a1542e50",
|
||||||
|
"SPORE": "0x6e7f5c0b9f4432716bdd0a77a3601291b9d9e985",
|
||||||
|
"START": "0xf44fb887334fa17d2c5c0f970b5d320ab53ed557",
|
||||||
|
"SUSHI": "0x39cf1bd5f15fb22ec3d9ff86b0727afc203427cc",
|
||||||
|
"SWAP.e": "0xc7b5d72c836e718cda8888eaf03707faef675079",
|
||||||
|
"TEDDY": "0x094bd7b2d99711a1486fb94d4395801c6d0fddcc",
|
||||||
|
"TIME": "0xb54f16fb19478766a268f172c9480f8da1a7c9c3",
|
||||||
|
"TRACTOR": "0x542fa0b261503333b90fe60c78f2beed16b7b7fd",
|
||||||
|
"TRYB": "0x564a341df6c126f90cf3ecb92120fd7190acb401",
|
||||||
|
"TSD": "0x4fbf0429599460d327bd5f55625e30e4fc066095",
|
||||||
|
"TUSD": "0x1c20e891bab6b1727d14da358fae2984ed9b59eb",
|
||||||
|
"USDT.e": "0xc7198437980c041c805a1edcba50c1ce5db95118",
|
||||||
|
"USDt": "0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7",
|
||||||
|
"VEE": "0x3709e8615e02c15b096f8a9b460ccb8ca8194e86",
|
||||||
|
"VSO": "0x846d50248baf8b7ceaa9d9b53bfd12d7d7fbb25a",
|
||||||
|
"WALBT": "0x9e037de681cafa6e661e6108ed9c2bd1aa567ecd",
|
||||||
|
"WAVAX": "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7",
|
||||||
|
"WOW": "0xa384bc7cdc0a93e686da9e7b8c0807cd040f4e0b",
|
||||||
|
"XAVA": "0xd1c3f94de7e5b45fa4edbba472491a9f4b166fc4",
|
||||||
|
"XCRS": "0x70b4ae8eb7bd572fc0eb244cd8021066b3ce7ee4",
|
||||||
|
"XMTL": "0x4c1057455747e3ee5871d374fdd77a304ce10989",
|
||||||
|
"XSLR": "0xe6ee049183b474ecf7704da3f6f555a1dcaf240f",
|
||||||
|
"YAK": "0x59414b3089ce2af0010e7523dea7e2b35d776ec7",
|
||||||
|
"xJOE": "0x57319d41f71e81f3c65f2a47ca4e001ebafd4f33",
|
||||||
|
"WETH.e": "0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab",
|
||||||
|
"WBTC.e": "0x50b7545627a5162F82A992c33b87aDc75187B218",
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewTokenMapper() evm.TokenMapper {
|
||||||
|
tm := evm.NewTokenMapper()
|
||||||
|
for s, s2 := range tokens {
|
||||||
|
tm.AddToken(s, common.HexToAddress(s2))
|
||||||
|
}
|
||||||
|
|
||||||
|
tm.AddAlias("ETH", "WETH.e")
|
||||||
|
tm.AddAlias("BTC", "WBTC.e")
|
||||||
|
return tm
|
||||||
|
}
|
1
beefy/contracts/vaultv6.abi
Normal file
1
beefy/contracts/vaultv6.abi
Normal file
File diff suppressed because one or more lines are too long
31
beefy/vaultv6.go
Normal file
31
beefy/vaultv6.go
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
package beefy
|
||||||
|
|
||||||
|
import (
|
||||||
|
"git.lehouerou.net/laurent/evm"
|
||||||
|
"git.lehouerou.net/laurent/evm/beefy/contracts"
|
||||||
|
"github.com/ethereum/go-ethereum/common"
|
||||||
|
"github.com/pkg/errors"
|
||||||
|
)
|
||||||
|
|
||||||
|
type VaultV6 struct {
|
||||||
|
evm.Token
|
||||||
|
client evm.Client
|
||||||
|
contract *contracts.VaultV6
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewVaultV6(client evm.Client, address common.Address) (*VaultV6, error) {
|
||||||
|
contract, err := contracts.NewVaultV6(address, client)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Wrap(err, "init vault contract")
|
||||||
|
}
|
||||||
|
token, err := client.TokenService().TokenByAddress(address)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Wrap(err, "init token contract")
|
||||||
|
}
|
||||||
|
|
||||||
|
return &VaultV6{
|
||||||
|
client: client,
|
||||||
|
contract: contract,
|
||||||
|
Token: token,
|
||||||
|
}, nil
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user