Skip to content
This repository was archived by the owner on Apr 10, 2024. It is now read-only.

Commit 0ec622a

Browse files
authored
chore: update documentation (#37)
* update readme
1 parent 8fa7a4f commit 0ec622a

File tree

21 files changed

+2751
-2884
lines changed

21 files changed

+2751
-2884
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ fee-oracle-1.0.0-swagger.yaml
3838
playground.go
3939

4040
# e2e tests
41-
scripts/e2e_test/
41+
scripts/e2e_test/sygma-solidity
4242

4343
# generated log files
4444
*.log

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ Fee oracle needs three config files in the `./` dir of the codebase:
2929
### Application config file `config.yaml`
3030
Template of the config.yaml can be found in `./config/config.template.yaml`.
3131

32-
### Domain config file `domain.json`
32+
### Domain config
33+
For domain configuration, it is posible to use local file, or the [shared configuration](https://github.com/sygmaprotocol/sygma-shared-configuration) file that is uploaded to some remote service (eg. ipfs). Depending if the URL or file path is provided to the flag `domain_config_path`, the aplication will use the domain configuration from local file or from the remote service.
3334
This file indicates all the domains and resources the fee oracle needs to fetch data for. Details need to be matched with
3435
Sygma core configuration, such as `id`.
3536

e2e/endpoint_test.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"encoding/hex"
99
"encoding/json"
1010
"fmt"
11+
"github.com/ethereum/go-ethereum/accounts/abi/bind"
1112
"io/ioutil"
1213
"math/big"
1314
"net/http"
@@ -19,7 +20,6 @@ import (
1920
"github.com/ethereum/go-ethereum/crypto"
2021

2122
"github.com/ChainSafe/sygma-fee-oracle/e2e/setup"
22-
"github.com/ethereum/go-ethereum/accounts/abi/bind"
2323
"github.com/stretchr/testify/suite"
2424

2525
"github.com/ChainSafe/sygma-fee-oracle/util"
@@ -96,10 +96,7 @@ func (s *SignatureVerificationTestSuite) TestSignatureVerification_CalculateFee(
9696
_, err = s.contractSetup.BridgeInstance.AdminSetResource(setup.IncreaseNonce(s.contractSetup.Auth), s.contractSetup.ERC20HandlerAddress, util.Byte32Converter(finalResourceId), s.contractSetup.ERC20PresetMinterPauserAddress, emptySetResourceData)
9797
s.Nil(err)
9898

99-
_, err = s.contractSetup.BridgeInstance.AdminChangeFeeHandler(setup.IncreaseNonce(s.contractSetup.Auth), s.contractSetup.FeeHandlerRouterAddress)
100-
s.Nil(err)
101-
102-
_, err = s.contractSetup.FeeHandlerRouterInstance.AdminSetResourceHandler(setup.IncreaseNonce(s.contractSetup.Auth), uint8(setup.FromDomainId), util.Byte32Converter(finalResourceId), s.contractSetup.FeeHandlerAddress)
99+
_, err = s.contractSetup.FeeHandlerRouterInstance.AdminSetResourceHandler(setup.IncreaseNonce(s.contractSetup.Auth), uint8(setup.FromDomainId), util.Byte32Converter(finalResourceId), s.contractSetup.DynamicFeeHandlerAddress)
103100
s.Nil(err)
104101

105102
// assembly data
@@ -138,13 +135,17 @@ func (s *SignatureVerificationTestSuite) TestSignatureVerification_CalculateFee(
138135
feeData := bytes.Buffer{}
139136
feeData.Write(finalFeeDataMessage)
140137
feeData.Write(sig)
141-
feeData.Write(finalAmount)
138+
feeData.Write(finalAmount) // not used in feeData, moved to depositData
142139
s.EqualValues(353, feeData.Len(), "invalid feeData")
143140

144141
s.True(bytes.Equal(feeData.Bytes()[:256], finalFeeDataMessage))
145142
s.True(bytes.Equal(feeData.Bytes()[256:321], sig))
146143
s.True(bytes.Equal(feeData.Bytes()[321:], finalAmount))
147144

145+
// deposit data
146+
depositData := bytes.Buffer{}
147+
depositData.Write(finalAmount)
148+
148149
// ecrecover verify signer
149150
signer, err := crypto.Ecrecover(crypto.Keccak256(finalFeeDataMessage), originalSig)
150151
if err != nil {
@@ -159,7 +160,7 @@ func (s *SignatureVerificationTestSuite) TestSignatureVerification_CalculateFee(
159160
}
160161

161162
// calling actual test: CalculateFee in Fee handler contract
162-
result, err := s.contractSetup.FeeHandlerInstance.CalculateFee(&bind.CallOpts{From: s.contractSetup.Auth.From}, setup.SenderAddress, uint8(setup.FromDomainId), uint8(setup.ToDomainID), util.Byte32Converter(finalResourceId), []byte(""), feeData.Bytes())
163+
result, err := s.contractSetup.DynamicFeeHandlerInstance.CalculateFee(&bind.CallOpts{From: s.contractSetup.Auth.From}, setup.SenderAddress, uint8(setup.FromDomainId), uint8(setup.ToDomainID), util.Byte32Converter(finalResourceId), depositData.Bytes(), feeData.Bytes())
163164
s.Nil(err)
164165

165166
// test result verification

e2e/setup/setup.go

Lines changed: 30 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import (
1010
"encoding/hex"
1111
"encoding/json"
1212
"fmt"
13+
"github.com/ChainSafe/sygma-fee-oracle/scripts/e2e_test/basicFeeHandler"
14+
"github.com/ChainSafe/sygma-fee-oracle/scripts/e2e_test/dynamicFeeHandler"
1315
"math/big"
1416
"time"
1517

@@ -19,7 +21,6 @@ import (
1921
"github.com/ChainSafe/sygma-fee-oracle/scripts/e2e_test/bridge"
2022
ERC20Handler "github.com/ChainSafe/sygma-fee-oracle/scripts/e2e_test/erc20Handler"
2123
ERC20PresetMinterPauser "github.com/ChainSafe/sygma-fee-oracle/scripts/e2e_test/erc20PresetMinterPauser"
22-
"github.com/ChainSafe/sygma-fee-oracle/scripts/e2e_test/feeHandler"
2324
"github.com/ChainSafe/sygma-fee-oracle/store/db"
2425
"github.com/ChainSafe/sygma-fee-oracle/types"
2526
"github.com/ethereum/go-ethereum/accounts/abi/bind"
@@ -42,8 +43,10 @@ type ContractsSetupResp struct {
4243
Auth *bind.TransactOpts
4344
BridgeInstance *bridge.Bridge
4445
BridgeAddress common.Address
45-
FeeHandlerInstance *feeHandler.FeeHandler
46-
FeeHandlerAddress common.Address
46+
DynamicFeeHandlerInstance *dynamicFeeHandler.DynamicFeeHandler
47+
DynamicFeeHandlerAddress common.Address
48+
BasicFeeHandlerInstance *basicFeeHandler.BasicFeeHandler
49+
BasicFeeHandlerAddress common.Address
4750
ERC20PresetMinterPauserInstance *ERC20PresetMinterPauser.ERC20PresetMinterPauser
4851
ERC20PresetMinterPauserAddress common.Address
4952
ERC20HandlerInstance *ERC20Handler.ERC20Handler
@@ -96,36 +99,49 @@ func ContractsSetup() *ContractsSetupResp {
9699
if err != nil {
97100
panic(err)
98101
}
99-
erc20HandlerAddress, _, _, err := ERC20Handler.DeployERC20Handler(IncreaseNonce(auth), client, bridgeAddress)
102+
erc20HandlerAddress, _, erc20HandlerInstance, err := ERC20Handler.DeployERC20Handler(IncreaseNonce(auth), client, bridgeAddress)
100103
if err != nil {
101104
panic(err)
102105
}
103106
feeHandlerRouterAddress, _, feeHandlerRouterInstance, err := FeeHandlerRouter.DeployFeeHandlerRouter(IncreaseNonce(auth), client, bridgeAddress)
104107
if err != nil {
105108
panic(err)
106109
}
107-
feeHandlerAddress, _, feeHandlerInstance, err := feeHandler.DeployFeeHandler(IncreaseNonce(auth), client, bridgeAddress, feeHandlerRouterAddress)
110+
dynamicFeeHandlerAddress, _, dynamicFeeHandlerInstance, err := dynamicFeeHandler.DeployDynamicFeeHandler(IncreaseNonce(auth), client, bridgeAddress, feeHandlerRouterAddress)
108111
if err != nil {
109112
panic(err)
110113
}
111-
_, err = feeHandlerInstance.SetFeeOracle(IncreaseNonce(auth), FeeOracleAddress)
114+
basicFeeHandlerAddress, _, basicFeeHandlerInstance, err := basicFeeHandler.DeployBasicFeeHandler(IncreaseNonce(auth), client, bridgeAddress, feeHandlerRouterAddress)
112115
if err != nil {
113116
panic(err)
114117
}
115-
registeredFeeOracle, err := feeHandlerInstance.OracleAddress(&bind.CallOpts{From: auth.From})
118+
_, err = bridgeInstance.AdminChangeFeeHandler(IncreaseNonce(auth), feeHandlerRouterAddress)
119+
if err != nil {
120+
panic(err)
121+
}
122+
_, err = dynamicFeeHandlerInstance.SetFeeOracle(IncreaseNonce(auth), FeeOracleAddress)
123+
if err != nil {
124+
panic(err)
125+
}
126+
registeredFeeOracle, err := dynamicFeeHandlerInstance.OracleAddress(&bind.CallOpts{From: auth.From})
116127
if err != nil {
117128
panic(err)
118129
}
119130
if registeredFeeOracle != FeeOracleAddress {
120131
panic("fee oracle address does not match with contract")
121132
}
122-
_, err = feeHandlerInstance.SetFeeProperties(IncreaseNonce(auth), uint32(gasUsed), uint16(feePercent))
133+
_, err = dynamicFeeHandlerInstance.SetFeeProperties(IncreaseNonce(auth), uint32(gasUsed), uint16(feePercent))
134+
if err != nil {
135+
panic(err)
136+
}
137+
_, err = basicFeeHandlerInstance.ChangeFee(IncreaseNonce(auth), big.NewInt(1000000000000000))
123138
if err != nil {
124139
panic(err)
125140
}
126141

127142
fmt.Println("bridgeAddress:", bridgeAddress.String())
128-
fmt.Println("feeHandlerAddress:", feeHandlerAddress.String())
143+
fmt.Println("dynamicFeeHandlerAddress:", dynamicFeeHandlerAddress.String())
144+
fmt.Println("basicFeeHandlerAddress:", basicFeeHandlerAddress.String())
129145
fmt.Println("feeHandlerRouterAddress:", feeHandlerRouterAddress.String())
130146
fmt.Println("resourceTokenAddress:", resourceTokenAddress.String())
131147
fmt.Println("erc20HandlerAddress:", erc20HandlerAddress.String())
@@ -134,10 +150,13 @@ func ContractsSetup() *ContractsSetupResp {
134150
Auth: auth,
135151
BridgeInstance: bridgeInstance,
136152
BridgeAddress: bridgeAddress,
137-
FeeHandlerInstance: feeHandlerInstance,
138-
FeeHandlerAddress: feeHandlerAddress,
153+
DynamicFeeHandlerInstance: dynamicFeeHandlerInstance,
154+
DynamicFeeHandlerAddress: dynamicFeeHandlerAddress,
155+
BasicFeeHandlerInstance: basicFeeHandlerInstance,
156+
BasicFeeHandlerAddress: basicFeeHandlerAddress,
139157
ERC20PresetMinterPauserAddress: resourceTokenAddress,
140158
ERC20HandlerAddress: erc20HandlerAddress,
159+
ERC20HandlerInstance: erc20HandlerInstance,
141160
FeeHandlerRouterInstance: feeHandlerRouterInstance,
142161
FeeHandlerRouterAddress: feeHandlerRouterAddress,
143162
}

go.mod

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,40 @@ module github.com/ChainSafe/sygma-fee-oracle
33
go 1.17
44

55
require (
6+
github.com/aws/aws-sdk-go-v2/config v1.1.1
7+
github.com/aws/aws-sdk-go-v2/service/ssm v1.35.6
68
github.com/ethereum/go-ethereum v1.10.17
79
github.com/gin-gonic/gin v1.7.7
810
github.com/golang/mock v1.6.0
11+
github.com/libp2p/go-libp2p v0.26.2
912
github.com/mitchellh/mapstructure v1.4.3
1013
github.com/pkg/errors v0.9.1
1114
github.com/robfig/cron/v3 v3.0.1
1215
github.com/sirupsen/logrus v1.8.1
1316
github.com/spf13/cobra v1.3.0
1417
github.com/spf13/viper v1.10.1
15-
github.com/stretchr/testify v1.7.1
18+
github.com/stretchr/testify v1.8.1
1619
github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7
1720
)
1821

1922
require (
2023
github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 // indirect
24+
github.com/aws/aws-sdk-go-v2 v1.17.6 // indirect
25+
github.com/aws/aws-sdk-go-v2/credentials v1.1.1 // indirect
26+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.2 // indirect
27+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.30 // indirect
28+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.24 // indirect
29+
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.31 // indirect
30+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.2 // indirect
31+
github.com/aws/aws-sdk-go-v2/service/sso v1.1.1 // indirect
32+
github.com/aws/aws-sdk-go-v2/service/sts v1.1.1 // indirect
33+
github.com/aws/smithy-go v1.13.5 // indirect
2134
github.com/btcsuite/btcd v0.20.1-beta // indirect
2235
github.com/btcsuite/btcd/btcec/v2 v2.1.2 // indirect
2336
github.com/davecgh/go-spew v1.1.1 // indirect
2437
github.com/deckarep/golang-set v1.8.0 // indirect
25-
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect
26-
github.com/fsnotify/fsnotify v1.5.1 // indirect
38+
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect
39+
github.com/fsnotify/fsnotify v1.5.4 // indirect
2740
github.com/gin-contrib/sse v0.1.0 // indirect
2841
github.com/go-ole/go-ole v1.2.1 // indirect
2942
github.com/go-playground/locales v0.13.0 // indirect
@@ -33,14 +46,17 @@ require (
3346
github.com/golang/protobuf v1.5.2 // indirect
3447
github.com/golang/snappy v0.0.4 // indirect
3548
github.com/google/go-cmp v0.5.8 // indirect
36-
github.com/google/uuid v1.2.0 // indirect
49+
github.com/google/uuid v1.3.0 // indirect
3750
github.com/gorilla/websocket v1.4.2 // indirect
3851
github.com/hashicorp/hcl v1.0.0 // indirect
3952
github.com/inconshreveable/mousetrap v1.0.0 // indirect
53+
github.com/jmespath/go-jmespath v0.4.0 // indirect
4054
github.com/json-iterator/go v1.1.12 // indirect
55+
github.com/klauspost/cpuid/v2 v2.2.1 // indirect
4156
github.com/leodido/go-urn v1.2.0 // indirect
4257
github.com/magiconair/properties v1.8.5 // indirect
43-
github.com/mattn/go-isatty v0.0.14 // indirect
58+
github.com/mattn/go-isatty v0.0.16 // indirect
59+
github.com/minio/sha256-simd v1.0.0 // indirect
4460
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
4561
github.com/modern-go/reflect2 v1.0.2 // indirect
4662
github.com/pelletier/go-toml v1.9.4 // indirect
@@ -55,12 +71,12 @@ require (
5571
github.com/tklauser/go-sysconf v0.3.5 // indirect
5672
github.com/tklauser/numcpus v0.2.2 // indirect
5773
github.com/ugorji/go/codec v1.1.7 // indirect
58-
golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 // indirect
59-
golang.org/x/sys v0.0.0-20211210111614-af8b64212486 // indirect
60-
golang.org/x/text v0.3.7 // indirect
61-
google.golang.org/protobuf v1.27.1 // indirect
74+
golang.org/x/crypto v0.4.0 // indirect
75+
golang.org/x/sys v0.3.0 // indirect
76+
golang.org/x/text v0.5.0 // indirect
77+
google.golang.org/protobuf v1.28.1 // indirect
6278
gopkg.in/ini.v1 v1.66.2 // indirect
6379
gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect
6480
gopkg.in/yaml.v2 v2.4.0 // indirect
65-
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
81+
gopkg.in/yaml.v3 v3.0.1 // indirect
6682
)

0 commit comments

Comments
 (0)