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

Commit

Permalink
chore: update documentation (#37)
Browse files Browse the repository at this point in the history
* update readme
  • Loading branch information
tcar121293 authored Mar 15, 2023
1 parent 8fa7a4f commit 0ec622a
Show file tree
Hide file tree
Showing 21 changed files with 2,751 additions and 2,884 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ fee-oracle-1.0.0-swagger.yaml
playground.go

# e2e tests
scripts/e2e_test/
scripts/e2e_test/sygma-solidity

# generated log files
*.log
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ Fee oracle needs three config files in the `./` dir of the codebase:
### Application config file `config.yaml`
Template of the config.yaml can be found in `./config/config.template.yaml`.

### Domain config file `domain.json`
### Domain config
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.
This file indicates all the domains and resources the fee oracle needs to fetch data for. Details need to be matched with
Sygma core configuration, such as `id`.

Expand Down
15 changes: 8 additions & 7 deletions e2e/endpoint_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"encoding/hex"
"encoding/json"
"fmt"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"io/ioutil"
"math/big"
"net/http"
Expand All @@ -19,7 +20,6 @@ import (
"github.com/ethereum/go-ethereum/crypto"

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

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

_, err = s.contractSetup.BridgeInstance.AdminChangeFeeHandler(setup.IncreaseNonce(s.contractSetup.Auth), s.contractSetup.FeeHandlerRouterAddress)
s.Nil(err)

_, err = s.contractSetup.FeeHandlerRouterInstance.AdminSetResourceHandler(setup.IncreaseNonce(s.contractSetup.Auth), uint8(setup.FromDomainId), util.Byte32Converter(finalResourceId), s.contractSetup.FeeHandlerAddress)
_, err = s.contractSetup.FeeHandlerRouterInstance.AdminSetResourceHandler(setup.IncreaseNonce(s.contractSetup.Auth), uint8(setup.FromDomainId), util.Byte32Converter(finalResourceId), s.contractSetup.DynamicFeeHandlerAddress)
s.Nil(err)

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

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

// deposit data
depositData := bytes.Buffer{}
depositData.Write(finalAmount)

// ecrecover verify signer
signer, err := crypto.Ecrecover(crypto.Keccak256(finalFeeDataMessage), originalSig)
if err != nil {
Expand All @@ -159,7 +160,7 @@ func (s *SignatureVerificationTestSuite) TestSignatureVerification_CalculateFee(
}

// calling actual test: CalculateFee in Fee handler contract
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())
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())
s.Nil(err)

// test result verification
Expand Down
41 changes: 30 additions & 11 deletions e2e/setup/setup.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ import (
"encoding/hex"
"encoding/json"
"fmt"
"github.com/ChainSafe/sygma-fee-oracle/scripts/e2e_test/basicFeeHandler"
"github.com/ChainSafe/sygma-fee-oracle/scripts/e2e_test/dynamicFeeHandler"
"math/big"
"time"

Expand All @@ -19,7 +21,6 @@ import (
"github.com/ChainSafe/sygma-fee-oracle/scripts/e2e_test/bridge"
ERC20Handler "github.com/ChainSafe/sygma-fee-oracle/scripts/e2e_test/erc20Handler"
ERC20PresetMinterPauser "github.com/ChainSafe/sygma-fee-oracle/scripts/e2e_test/erc20PresetMinterPauser"
"github.com/ChainSafe/sygma-fee-oracle/scripts/e2e_test/feeHandler"
"github.com/ChainSafe/sygma-fee-oracle/store/db"
"github.com/ChainSafe/sygma-fee-oracle/types"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
Expand All @@ -42,8 +43,10 @@ type ContractsSetupResp struct {
Auth *bind.TransactOpts
BridgeInstance *bridge.Bridge
BridgeAddress common.Address
FeeHandlerInstance *feeHandler.FeeHandler
FeeHandlerAddress common.Address
DynamicFeeHandlerInstance *dynamicFeeHandler.DynamicFeeHandler
DynamicFeeHandlerAddress common.Address
BasicFeeHandlerInstance *basicFeeHandler.BasicFeeHandler
BasicFeeHandlerAddress common.Address
ERC20PresetMinterPauserInstance *ERC20PresetMinterPauser.ERC20PresetMinterPauser
ERC20PresetMinterPauserAddress common.Address
ERC20HandlerInstance *ERC20Handler.ERC20Handler
Expand Down Expand Up @@ -96,36 +99,49 @@ func ContractsSetup() *ContractsSetupResp {
if err != nil {
panic(err)
}
erc20HandlerAddress, _, _, err := ERC20Handler.DeployERC20Handler(IncreaseNonce(auth), client, bridgeAddress)
erc20HandlerAddress, _, erc20HandlerInstance, err := ERC20Handler.DeployERC20Handler(IncreaseNonce(auth), client, bridgeAddress)
if err != nil {
panic(err)
}
feeHandlerRouterAddress, _, feeHandlerRouterInstance, err := FeeHandlerRouter.DeployFeeHandlerRouter(IncreaseNonce(auth), client, bridgeAddress)
if err != nil {
panic(err)
}
feeHandlerAddress, _, feeHandlerInstance, err := feeHandler.DeployFeeHandler(IncreaseNonce(auth), client, bridgeAddress, feeHandlerRouterAddress)
dynamicFeeHandlerAddress, _, dynamicFeeHandlerInstance, err := dynamicFeeHandler.DeployDynamicFeeHandler(IncreaseNonce(auth), client, bridgeAddress, feeHandlerRouterAddress)
if err != nil {
panic(err)
}
_, err = feeHandlerInstance.SetFeeOracle(IncreaseNonce(auth), FeeOracleAddress)
basicFeeHandlerAddress, _, basicFeeHandlerInstance, err := basicFeeHandler.DeployBasicFeeHandler(IncreaseNonce(auth), client, bridgeAddress, feeHandlerRouterAddress)
if err != nil {
panic(err)
}
registeredFeeOracle, err := feeHandlerInstance.OracleAddress(&bind.CallOpts{From: auth.From})
_, err = bridgeInstance.AdminChangeFeeHandler(IncreaseNonce(auth), feeHandlerRouterAddress)
if err != nil {
panic(err)
}
_, err = dynamicFeeHandlerInstance.SetFeeOracle(IncreaseNonce(auth), FeeOracleAddress)
if err != nil {
panic(err)
}
registeredFeeOracle, err := dynamicFeeHandlerInstance.OracleAddress(&bind.CallOpts{From: auth.From})
if err != nil {
panic(err)
}
if registeredFeeOracle != FeeOracleAddress {
panic("fee oracle address does not match with contract")
}
_, err = feeHandlerInstance.SetFeeProperties(IncreaseNonce(auth), uint32(gasUsed), uint16(feePercent))
_, err = dynamicFeeHandlerInstance.SetFeeProperties(IncreaseNonce(auth), uint32(gasUsed), uint16(feePercent))
if err != nil {
panic(err)
}
_, err = basicFeeHandlerInstance.ChangeFee(IncreaseNonce(auth), big.NewInt(1000000000000000))
if err != nil {
panic(err)
}

fmt.Println("bridgeAddress:", bridgeAddress.String())
fmt.Println("feeHandlerAddress:", feeHandlerAddress.String())
fmt.Println("dynamicFeeHandlerAddress:", dynamicFeeHandlerAddress.String())
fmt.Println("basicFeeHandlerAddress:", basicFeeHandlerAddress.String())
fmt.Println("feeHandlerRouterAddress:", feeHandlerRouterAddress.String())
fmt.Println("resourceTokenAddress:", resourceTokenAddress.String())
fmt.Println("erc20HandlerAddress:", erc20HandlerAddress.String())
Expand All @@ -134,10 +150,13 @@ func ContractsSetup() *ContractsSetupResp {
Auth: auth,
BridgeInstance: bridgeInstance,
BridgeAddress: bridgeAddress,
FeeHandlerInstance: feeHandlerInstance,
FeeHandlerAddress: feeHandlerAddress,
DynamicFeeHandlerInstance: dynamicFeeHandlerInstance,
DynamicFeeHandlerAddress: dynamicFeeHandlerAddress,
BasicFeeHandlerInstance: basicFeeHandlerInstance,
BasicFeeHandlerAddress: basicFeeHandlerAddress,
ERC20PresetMinterPauserAddress: resourceTokenAddress,
ERC20HandlerAddress: erc20HandlerAddress,
ERC20HandlerInstance: erc20HandlerInstance,
FeeHandlerRouterInstance: feeHandlerRouterInstance,
FeeHandlerRouterAddress: feeHandlerRouterAddress,
}
Expand Down
36 changes: 26 additions & 10 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,27 +3,40 @@ module github.com/ChainSafe/sygma-fee-oracle
go 1.17

require (
github.com/aws/aws-sdk-go-v2/config v1.1.1
github.com/aws/aws-sdk-go-v2/service/ssm v1.35.6
github.com/ethereum/go-ethereum v1.10.17
github.com/gin-gonic/gin v1.7.7
github.com/golang/mock v1.6.0
github.com/libp2p/go-libp2p v0.26.2
github.com/mitchellh/mapstructure v1.4.3
github.com/pkg/errors v0.9.1
github.com/robfig/cron/v3 v3.0.1
github.com/sirupsen/logrus v1.8.1
github.com/spf13/cobra v1.3.0
github.com/spf13/viper v1.10.1
github.com/stretchr/testify v1.7.1
github.com/stretchr/testify v1.8.1
github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7
)

require (
github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 // indirect
github.com/aws/aws-sdk-go-v2 v1.17.6 // indirect
github.com/aws/aws-sdk-go-v2/credentials v1.1.1 // indirect
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.2 // indirect
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.30 // indirect
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.24 // indirect
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.31 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.2 // indirect
github.com/aws/aws-sdk-go-v2/service/sso v1.1.1 // indirect
github.com/aws/aws-sdk-go-v2/service/sts v1.1.1 // indirect
github.com/aws/smithy-go v1.13.5 // indirect
github.com/btcsuite/btcd v0.20.1-beta // indirect
github.com/btcsuite/btcd/btcec/v2 v2.1.2 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/deckarep/golang-set v1.8.0 // indirect
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect
github.com/fsnotify/fsnotify v1.5.1 // indirect
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect
github.com/fsnotify/fsnotify v1.5.4 // indirect
github.com/gin-contrib/sse v0.1.0 // indirect
github.com/go-ole/go-ole v1.2.1 // indirect
github.com/go-playground/locales v0.13.0 // indirect
Expand All @@ -33,14 +46,17 @@ require (
github.com/golang/protobuf v1.5.2 // indirect
github.com/golang/snappy v0.0.4 // indirect
github.com/google/go-cmp v0.5.8 // indirect
github.com/google/uuid v1.2.0 // indirect
github.com/google/uuid v1.3.0 // indirect
github.com/gorilla/websocket v1.4.2 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
github.com/inconshreveable/mousetrap v1.0.0 // indirect
github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/klauspost/cpuid/v2 v2.2.1 // indirect
github.com/leodido/go-urn v1.2.0 // indirect
github.com/magiconair/properties v1.8.5 // indirect
github.com/mattn/go-isatty v0.0.14 // indirect
github.com/mattn/go-isatty v0.0.16 // indirect
github.com/minio/sha256-simd v1.0.0 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/pelletier/go-toml v1.9.4 // indirect
Expand All @@ -55,12 +71,12 @@ require (
github.com/tklauser/go-sysconf v0.3.5 // indirect
github.com/tklauser/numcpus v0.2.2 // indirect
github.com/ugorji/go/codec v1.1.7 // indirect
golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 // indirect
golang.org/x/sys v0.0.0-20211210111614-af8b64212486 // indirect
golang.org/x/text v0.3.7 // indirect
google.golang.org/protobuf v1.27.1 // indirect
golang.org/x/crypto v0.4.0 // indirect
golang.org/x/sys v0.3.0 // indirect
golang.org/x/text v0.5.0 // indirect
google.golang.org/protobuf v1.28.1 // indirect
gopkg.in/ini.v1 v1.66.2 // indirect
gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
Loading

0 comments on commit 0ec622a

Please sign in to comment.