Commit f7a27fa1 authored by QM's avatar QM Committed by vipwzw

delete relayer set symbol

parent e7a941d0
......@@ -12,28 +12,13 @@ source "./mainPubilcRelayerTest.sh"
{
chain33BridgeBank=""
ethBridgeBank=""
chain33BtyERC20TokenAddr="1111111111111111111114oLvT2"
ethereumBtyBridgeTokenAddr=""
chain33EthBridgeTokenAddr=""
ethereumBycERC20TokenAddr=""
chain33BycBridgeTokenAddr=""
ethereumUSDTERC20TokenAddr=""
chain33USDTBridgeTokenAddr=""
chain33YccERC20TokenAddr=""
ethereumYccBridgeTokenAddr=""
chain33ZbcERC20TokenAddr=""
ethereumZbcBridgeTokenAddr=""
BridgeRegistryOnChain33=""
BridgeRegistryOnEth=""
multisignChain33Addr=""
multisignEthAddr=""
chain33EthBridgeTokenAddr=""
ethereumUSDTERC20TokenAddr=""
chain33USDTBridgeTokenAddr=""
chain33ID=0
maturityDegree=10
......@@ -46,7 +31,6 @@ source "./mainPubilcRelayerTest.sh"
chain33DeployAddr="1JxhYLYsrscjTaQfaMoVUrnSdrejP7XRQD"
chain33DeployKey="0x9ef82623a5e9aac58d3a6b06392af66ec77289522b28896aed66abaaede66903"
# validatorsAddr=["0x92C8b16aFD6d423652559C6E266cBE1c29Bfd84f", "0x0df9a824699bc5878232c9e612fe1a5346a5a368", "0xcb074cb21cdddf3ce9c3c0a7ac4497d633c9d9f1", "0xd9dab021e74ecf475788ed7b61356056b2095830"]# shellcheck disable=SC2034
# eth 验证者私钥
ethValidatorAddra="0x92C8b16aFD6d423652559C6E266cBE1c29Bfd84f"
ethValidatorAddrb="0x0df9a824699bc5878232c9e612fe1a5346a5a368"
......@@ -82,6 +66,9 @@ source "./mainPubilcRelayerTest.sh"
chain33ReceiverAddr="12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv"
chain33ReceiverAddrKey="4257d8692ef7fe13c68b65d6a52f03933db2fa5ce8faf210b5b8b80c721ced01"
paraMainAddr="12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv"
paraMainAddrKey="4257d8692ef7fe13c68b65d6a52f03933db2fa5ce8faf210b5b8b80c721ced01"
}
function chain33_offline_send_evm() {
......@@ -92,6 +79,34 @@ function chain33_offline_send_evm() {
check_tx "${Chain33Cli}" "${hash}"
}
# $1 symbol $2 bridgeTokenAddr
function updateConfig() {
local symbol=$1
local bridgeTokenAddr=$2
tx=$(curl -s --data-binary '{"jsonrpc":"2.0","id":2,"method":"Chain33.CreateTransaction","params":[{"execer":"manage","actionName":"Modify","payload":{"key":"evmxgo-mint-'"${symbol}"'","value":"{\"address\":\"'"${bridgeTokenAddr}"'\",\"precision\":8,\"introduction\":\"symbol:'"${symbol}"', bridgeTokenAddr:'"${bridgeTokenAddr}"'\"}","op":"add","addr":""}}]}' -H 'content-type:text/plain;' "http://${docker_chain33_ip}:8901" | jq -r ".result")
if [ "${tx}" == "" ]; then
echo -e "${RED}update config create tx 1${NOC}"
exit 1
fi
sign=$(${Chain33Cli} wallet sign -k "$paraMainAddrKey" -d "${tx}")
hash=$(${Chain33Cli} wallet send -d "${sign}")
check_tx "${Chain33Cli}" "${hash}"
}
function configbridgevmxgoAddr() {
local bridgevmxgoAddr=$1
tx=$(curl -s --data-binary '{"jsonrpc":"2.0","id":2,"method":"Chain33.CreateTransaction","params":[{"execer":"manage","actionName":"Modify","payload":{"key":"bridgevmxgo-contract-addr","value":"{\"address\":\"'"${bridgevmxgoAddr}"'\"}","op":"add","addr":""}}]}' -H 'content-type:text/plain;' "http://${docker_chain33_ip}:8901" | jq -r ".result")
if [ "${tx}" == "" ]; then
echo -e "${RED}update config create tx 1${NOC}"
exit 1
fi
sign=$(${Chain33Cli} wallet sign -k "$paraMainAddrKey" -d "${tx}")
hash=$(${Chain33Cli} wallet send -d "${sign}")
check_tx "${Chain33Cli}" "${hash}"
}
function DeployEvmxgo() {
# 在 chain33 上部署合约
# shellcheck disable=SC2154
......@@ -112,59 +127,32 @@ function DeployEvmxgo() {
${EvmxgoBoss4xCLI} chain33 offline create_add_lock_list -s ETH -t "${chain33EthBridgeTokenAddr}" -c "${XgoChain33BridgeBank}" -k "${chain33DeployKey}" -f 1 --chainID "${chain33ID}"
chain33_offline_send_evm "create_add_lock_list.txt"
${EvmxgoBoss4xCLI} chain33 offline create_add_lock_list -s BYC -t "${chain33BycBridgeTokenAddr}" -c "${XgoChain33BridgeBank}" -k "${chain33DeployKey}" -f 1 --chainID "${chain33ID}"
chain33_offline_send_evm "create_add_lock_list.txt"
${EvmxgoBoss4xCLI} chain33 offline create_add_lock_list -s USDT -t "${chain33USDTBridgeTokenAddr}" -c "${XgoChain33BridgeBank}" -k "${chain33DeployKey}" -f 1 --chainID "${chain33ID}"
chain33_offline_send_evm "create_add_lock_list.txt"
updateConfig "ETH" "${chain33EthBridgeTokenAddr}"
updateConfig "USDT" "${chain33USDTBridgeTokenAddr}"
configbridgevmxgoAddr "${XgoChain33BridgeBank}"
# 重启,需要重新启动relayer,更新nonce
restart_ebrelayerA
}
# $1 symbol $2 bridgeTokenAddr
function updateConfig() {
local symbol=$1
local bridgeTokenAddr=$2
tx=$(curl -s --data-binary '{"jsonrpc":"2.0","id":2,"method":"Chain33.CreateTransaction","params":[{"execer":"manage","actionName":"Modify","payload":{"key":"evmxgo-mint-'"${symbol}"'","value":"{\"address\":\"'"${bridgeTokenAddr}"'\",\"precision\":8,\"introduction\":\"symbol:'"${symbol}"', bridgeTokenAddr:'"${bridgeTokenAddr}"'\"}","op":"add","addr":""}}]}' -H 'content-type:text/plain;' "http://${docker_chain33_ip}:8901" | jq -r ".result")
if [ "${tx}" == "" ]; then
echo -e "${RED}update config create tx 1${NOC}"
exit 1
fi
sign=$(${Chain33Cli} wallet sign -k "$chain33ReceiverAddrKey" -d "${tx}")
hash=$(${Chain33Cli} wallet send -d "${sign}")
check_tx "${Chain33Cli}" "${hash}"
}
function configbridgevmxgoAddr() {
local bridgevmxgoAddr=$1
tx=$(curl -s --data-binary '{"jsonrpc":"2.0","id":2,"method":"Chain33.CreateTransaction","params":[{"execer":"manage","actionName":"Modify","payload":{"key":"bridgevmxgo-contract-addr","value":"{\"address\":\"'"${bridgevmxgoAddr}"'\"}","op":"add","addr":""}}]}' -H 'content-type:text/plain;' "http://${docker_chain33_ip}:8901" | jq -r ".result")
if [ "${tx}" == "" ]; then
echo -e "${RED}update config create tx 1${NOC}"
exit 1
fi
sign=$(${Chain33Cli} wallet sign -k "$chain33ReceiverAddrKey" -d "${tx}")
hash=$(${Chain33Cli} wallet send -d "${sign}")
check_tx "${Chain33Cli}" "${hash}"
}
function TestETH2EVMToChain33() {
# 查询 ETH 这端 bridgeBank 地址原来是 0
result=$(${CLIA} ethereum balance -o "${ethBridgeBank}")
# cli_ret "${result}" "balance" ".balance" "16"
cli_ret "${result}" "balance" ".balance" "0"
# ETH 这端 lock 11个
result=$(${CLIA} ethereum lock -m 11 -k "${ethTestAddrKey1}" -r "${chain33ReceiverAddr}")
# cli_ret "${result}" "lock"
cli_ret "${result}" "lock"
# eth 等待 2 个区块
sleep 4
# 查询 ETH 这端 bridgeBank 地址 11 原来16
# 查询 ETH 这端 bridgeBank 地址 11
result=$(${CLIA} ethereum balance -o "${ethBridgeBank}")
# cli_ret "${result}" "balance" ".balance" "27"
cli_ret "${result}" "balance" ".balance" "11"
sleep ${maturityDegree}
......@@ -173,9 +161,6 @@ function TestETH2EVMToChain33() {
# 结果是 11 * le8
# is_equal "${result}" "4700000000"
updateConfig "ETH" "${chain33EthBridgeTokenAddr}"
configbridgevmxgoAddr "${XgoChain33BridgeBank}"
${EvmxgoBoss4xCLI} chain33 offline approve_erc20 -a 330000000000 -s "${XgoChain33BridgeBank}" -c "${chain33EthBridgeTokenAddr}" -k "${chain33ReceiverAddrKey}" -f 1 --chainID "${chain33ID}"
chain33_offline_send_evm "approve_erc20.txt"
......@@ -189,49 +174,10 @@ function TestETH2EVMToChain33() {
# is_equal "${result}" "500000000"
}
function Testethereum2EVMToChain33_byc() {
# 查询 ETH 这端 bridgeBank 地址原来是
result=$(${CLIA} ethereum balance -o "${ethBridgeBank}" -t "${ethereumBycERC20TokenAddr}")
# cli_ret "${result}" "balance" ".balance" "0"
# ETH 这端 lock 7个
result=$(${CLIA} ethereum lock -m 7 -k "${ethTestAddrKey1}" -r "${chain33ReceiverAddr}" -t "${ethereumBycERC20TokenAddr}")
cli_ret "${result}" "lock"
# eth 等待 2 个区块
sleep 4
# 查询 ETH 这端 bridgeBank 地址 7
result=$(${CLIA} ethereum balance -o "${ethBridgeBank}" -t "${ethereumBycERC20TokenAddr}")
# cli_ret "${result}" "balance" ".balance" "7"
sleep ${maturityDegree}
# chain33 chain33EthBridgeTokenAddr(ETH合约中)查询 lock 金额
result=$(${Chain33Cli} evm query -a "${chain33BycBridgeTokenAddr}" -c "${chain33TestAddr1}" -b "balanceOf(${chain33ReceiverAddr})")
# 结果是 7 * le8
# is_equal "${result}" "700000000"
updateConfig "BYC" "${chain33BycBridgeTokenAddr}"
configbridgevmxgoAddr "${XgoChain33BridgeBank}"
${EvmxgoBoss4xCLI} chain33 offline approve_erc20 -a 330000000000 -s "${XgoChain33BridgeBank}" -c "${chain33BycBridgeTokenAddr}" -k "${chain33ReceiverAddrKey}" -f 1 --chainID "${chain33ID}"
chain33_offline_send_evm "approve_erc20.txt"
hash=$(${Chain33Cli} send evm call -f 1 -k "${chain33ReceiverAddr}" -e "${XgoChain33BridgeBank}" -p "lock(${chain33TestAddr2}, ${chain33BycBridgeTokenAddr}, 500000000)" --chainID "${chain33ID}")
check_tx "${Chain33Cli}" "${hash}"
result=$(${Chain33Cli} evm query -a "${chain33BycBridgeTokenAddr}" -c "${chain33DeployAddr}" -b "balanceOf(${chain33ReceiverAddr})")
# is_equal "${result}" "4200000000"
result=$(${Chain33Cli} evm query -a "${chain33BycBridgeTokenAddr}" -c "${chain33DeployAddr}" -b "balanceOf(${XgoChain33BridgeBank})")
# is_equal "${result}" "500000000"
}
function Testethereum2EVMToChain33_usdt() {
# 查询 ETH 这端 bridgeBank 地址原来是
result=$(${CLIA} ethereum balance -o "${ethBridgeBank}" -t "${ethereumUSDTERC20TokenAddr}")
# cli_ret "${result}" "balance" ".balance" "0"
cli_ret "${result}" "balance" ".balance" "0"
# ETH 这端 lock 12个
result=$(${CLIA} ethereum lock -m 12 -k "${ethTestAddrKey1}" -r "${chain33ReceiverAddr}" -t "${ethereumUSDTERC20TokenAddr}")
......@@ -242,18 +188,14 @@ function Testethereum2EVMToChain33_usdt() {
# 查询 ETH 这端 bridgeBank 地址 12
result=$(${CLIA} ethereum balance -o "${ethBridgeBank}" -t "${ethereumUSDTERC20TokenAddr}")
# cli_ret "${result}" "balance" ".balance" "12"
cli_ret "${result}" "balance" ".balance" "12"
sleep ${maturityDegree}
# chain33 chain33EthBridgeTokenAddr(ETH合约中)查询 lock 金额
result=$(${Chain33Cli} evm query -a "${chain33USDTBridgeTokenAddr}" -c "${chain33TestAddr1}" -b "balanceOf(${chain33ReceiverAddr})")
# 结果是 7 * le8
# is_equal "${result}" "700000000"
updateConfig "USDT" "${chain33USDTBridgeTokenAddr}"
configbridgevmxgoAddr "${XgoChain33BridgeBank}"
${EvmxgoBoss4xCLI} chain33 offline approve_erc20 -a 330000000000 -s "${XgoChain33BridgeBank}" -c "${chain33USDTBridgeTokenAddr}" -k "${chain33ReceiverAddrKey}" -f 1 --chainID "${chain33ID}"
chain33_offline_send_evm "approve_erc20.txt"
......@@ -292,27 +234,10 @@ function test_evm_all() {
Chain33Cli=${Para8901Cli}
TestChain33ToEthAssets
TestETH2Chain33Assets
TestChain33ToEthZBCAssets
TestETH2Chain33Byc
TestETH2Chain33USDT
Chain33Cli=${Para8901Cli}
lockBty
lockChain33Ycc
lockEth
lockEthByc
lockEthUSDT
# 离线多签地址转入阈值设大
offline_set_offline_token_Bty 100000000000000 10
offline_set_offline_token_Chain33Ycc 100000000000000 10
offline_set_offline_token_Eth 100000000000000 10
offline_set_offline_token_EthByc 100000000000000 10
offline_set_offline_token_EthUSDT 100000000000000 10
DeployEvmxgo
TestETH2EVMToChain33
Testethereum2EVMToChain33_byc
Testethereum2EVMToChain33_usdt
}
......
......@@ -125,7 +125,7 @@ func CreateEthBridgeBankRelated(cmd *cobra.Command, _ []string) {
func CreateCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "create", //first step
Short: "create and sign all the offline cross to ethereum contracts(inclue valset,ethereumBridge,bridgeBank,oracle,bridgeRegistry,mulSign)",
Short: "create all the offline cross to ethereum contracts(inclue valset,ethereumBridge,bridgeBank,oracle,bridgeRegistry,mulSign), set symbol",
Run: createTx, //对要部署的factory合约进行签名
}
addCreateFlags(cmd)
......@@ -139,6 +139,8 @@ func addCreateFlags(cmd *cobra.Command) {
_ = cmd.MarkFlagRequired("initPowers")
cmd.Flags().StringP("owner", "o", "", "the deployer address")
_ = cmd.MarkFlagRequired("owner")
cmd.Flags().StringP("symbol", "s", "", "symbol")
_ = cmd.MarkFlagRequired("symbol")
}
func createTx(cmd *cobra.Command, _ []string) {
......@@ -149,6 +151,7 @@ func createTx(cmd *cobra.Command, _ []string) {
deployerAddr := common.HexToAddress(owner)
validatorsAddrsArray := strings.Split(validatorsAddrs, ",")
initPowersArray := strings.Split(initpowers, ",")
symbol, _ := cmd.Flags().GetString("symbol")
if len(validatorsAddrsArray) != len(initPowersArray) {
fmt.Println("input validatorsAddrs initPowers error!")
......@@ -174,13 +177,13 @@ func createTx(cmd *cobra.Command, _ []string) {
initPowers = append(initPowers, big.NewInt(vint64))
}
err := createDeployTxs(url, deployerAddr, validators, initPowers)
err := createDeployTxs(url, deployerAddr, validators, initPowers, symbol)
if err != nil {
panic(err)
}
}
func createDeployTxs(url string, deployerAddr common.Address, validators []common.Address, initPowers []*big.Int) error {
func createDeployTxs(url string, deployerAddr common.Address, validators []common.Address, initPowers []*big.Int, symbol string) error {
client, err := ethclient.Dial(url)
if err != nil {
return err
......@@ -200,57 +203,73 @@ func createDeployTxs(url string, deployerAddr common.Address, validators []commo
}
valSetAddr := crypto.CreateAddress(deployerAddr, startNonce)
infos = append(infos, &DeployInfo{PackData: packData, ContractorAddr: valSetAddr, Name: "valSet", Nonce: startNonce, To: nil})
startNonce += 1
//step2 chain33bridge
packData, err = deploychain33BridgePackData(deployerAddr, valSetAddr)
if err != nil {
return err
}
chain33BridgeAddr := crypto.CreateAddress(deployerAddr, startNonce+1)
infos = append(infos, &DeployInfo{PackData: packData, ContractorAddr: chain33BridgeAddr, Name: "chain33Bridge", Nonce: startNonce + 1, To: nil})
chain33BridgeAddr := crypto.CreateAddress(deployerAddr, startNonce)
infos = append(infos, &DeployInfo{PackData: packData, ContractorAddr: chain33BridgeAddr, Name: "chain33Bridge", Nonce: startNonce, To: nil})
startNonce += 1
//step3 oracle
packData, err = deployOraclePackData(deployerAddr, valSetAddr, chain33BridgeAddr)
if err != nil {
return err
}
oracleAddr := crypto.CreateAddress(deployerAddr, startNonce+2)
infos = append(infos, &DeployInfo{PackData: packData, ContractorAddr: oracleAddr, Name: "oracle", Nonce: startNonce + 2, To: nil})
oracleAddr := crypto.CreateAddress(deployerAddr, startNonce)
infos = append(infos, &DeployInfo{PackData: packData, ContractorAddr: oracleAddr, Name: "oracle", Nonce: startNonce, To: nil})
startNonce += 1
//step4 bridgebank
packData, err = deployBridgeBankPackData(deployerAddr, chain33BridgeAddr, oracleAddr)
if err != nil {
return err
}
bridgeBankAddr := crypto.CreateAddress(deployerAddr, startNonce+3)
infos = append(infos, &DeployInfo{PackData: packData, ContractorAddr: bridgeBankAddr, Name: "bridgebank", Nonce: startNonce + 3, To: nil})
bridgeBankAddr := crypto.CreateAddress(deployerAddr, startNonce)
infos = append(infos, &DeployInfo{PackData: packData, ContractorAddr: bridgeBankAddr, Name: "bridgebank", Nonce: startNonce, To: nil})
startNonce += 1
//step5
packData, err = callSetBridgeBank(bridgeBankAddr)
if err != nil {
return err
}
infos = append(infos, &DeployInfo{PackData: packData, ContractorAddr: common.Address{}, Name: "setbridgebank", Nonce: startNonce + 4, To: &chain33BridgeAddr})
infos = append(infos, &DeployInfo{PackData: packData, ContractorAddr: common.Address{}, Name: "setbridgebank", Nonce: startNonce, To: &chain33BridgeAddr})
startNonce += 1
//step6
packData, err = callSetOracal(oracleAddr)
if err != nil {
return err
}
infos = append(infos, &DeployInfo{PackData: packData, ContractorAddr: common.Address{}, Name: "setoracle", Nonce: startNonce + 5, To: &chain33BridgeAddr})
infos = append(infos, &DeployInfo{PackData: packData, ContractorAddr: common.Address{}, Name: "setoracle", Nonce: startNonce, To: &chain33BridgeAddr})
startNonce += 1
//step7 bridgeRegistry
packData, err = deployBridgeRegistry(chain33BridgeAddr, bridgeBankAddr, oracleAddr, valSetAddr)
//step7 set symbol
packData, err = setSymbol(symbol)
if err != nil {
return err
}
bridgeRegAddr := crypto.CreateAddress(deployerAddr, startNonce+6)
infos = append(infos, &DeployInfo{PackData: packData, ContractorAddr: bridgeRegAddr, Name: "bridgeRegistry", Nonce: startNonce + 6, To: nil})
infos = append(infos, &DeployInfo{PackData: packData, ContractorAddr: common.Address{}, Name: "setsymbol", Nonce: startNonce, To: &bridgeBankAddr})
startNonce += 1
//step8 bridgeRegistry
packData, err = deployBridgeRegistry(chain33BridgeAddr, bridgeBankAddr, oracleAddr, valSetAddr)
if err != nil {
return err
}
bridgeRegAddr := crypto.CreateAddress(deployerAddr, startNonce)
infos = append(infos, &DeployInfo{PackData: packData, ContractorAddr: bridgeRegAddr, Name: "bridgeRegistry", Nonce: startNonce, To: nil})
startNonce += 1
//step9 mulSign
packData = common.FromHex(gnosis.GnosisSafeBin)
mulSignAddr := crypto.CreateAddress(deployerAddr, startNonce+7)
infos = append(infos, &DeployInfo{PackData: packData, ContractorAddr: mulSignAddr, Name: "mulSignAddr", Nonce: startNonce + 7, To: nil})
mulSignAddr := crypto.CreateAddress(deployerAddr, startNonce)
infos = append(infos, &DeployInfo{PackData: packData, ContractorAddr: mulSignAddr, Name: "mulSignAddr", Nonce: startNonce, To: nil})
startNonce += 1
return NewTxWrite(infos, deployerAddr, url, "deploytxs.txt")
}
......@@ -407,6 +426,19 @@ func deployBridgeRegistry(chain33BridgeAddr, bridgeBankAddr, oracleAddr, valSetA
return append(bin, packData...), nil
}
//step 8
func setSymbol(symbol string) ([]byte, error) {
bridgeAbi, err := abi.JSON(strings.NewReader(generated.BridgeBankABI))
if err != nil {
return nil, err
}
abiData, err := bridgeAbi.Pack("configplatformTokenSymbol", symbol)
if err != nil {
return nil, err
}
return abiData, nil
}
func CreateWithFileCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "create_file", //first step
......@@ -449,7 +481,7 @@ func createWithFileTx(cmd *cobra.Command, _ []string) {
initPowers = append(initPowers, big.NewInt(deployCfg.InitPowers[i]))
}
err = createDeployTxs(url, deployerAddr, validators, initPowers)
err = createDeployTxs(url, deployerAddr, validators, initPowers, deployCfg.Symbol)
if err != nil {
fmt.Println("createDeployTxs Err:", err)
return
......
......@@ -45,7 +45,7 @@ func DeployOfflineContractsCmd() *cobra.Command {
CreateMultisignTransferTxCmd(), // 创建多签转帐交易
SignCmd(), // 签名交易 sign deploy contract tx
SendTxsCmd(), // 发送交易 send all kinds of tx
ConfigplatformTokenSymbolCmd(),
//ConfigplatformTokenSymbolCmd(),
CreateEthBridgeBankRelatedCmd(), //构造交易
)
......@@ -67,6 +67,7 @@ type DeployConfigInfo struct {
DeployerPrivateKey string `toml:"deployerPrivateKey"`
ValidatorsAddr []string `toml:"validatorsAddr"`
InitPowers []int64 `toml:"initPowers"`
Symbol string `toml:"symbol"`
}
func CreateTxInfoAndWrite(abiData []byte, deployAddr, contract, name, url string) {
......
......@@ -12,29 +12,17 @@ source "./offlinePublic.sh"
{
chain33BridgeBank=""
ethBridgeBank=""
BridgeRegistryOnChain33=""
BridgeRegistryOnEth=""
multisignChain33Addr=""
multisignEthAddr=""
chain33BtyERC20TokenAddr="1111111111111111111114oLvT2"
ethereumBtyBridgeTokenAddr=""
chain33EthBridgeTokenAddr=""
ethereumBycERC20TokenAddr=""
chain33BycBridgeTokenAddr=""
ethereumUSDTERC20TokenAddr=""
chain33USDTBridgeTokenAddr=""
chain33YccERC20TokenAddr=""
ethereumYccBridgeTokenAddr=""
chain33ZbcERC20TokenAddr=""
ethereumZbcBridgeTokenAddr=""
BridgeRegistryOnChain33=""
BridgeRegistryOnEth=""
multisignChain33Addr=""
multisignEthAddr=""
chain33ID=0
maturityDegree=10
......@@ -216,54 +204,55 @@ function TestChain33ToEthAssets() {
}
# chain33 lock ZBC, eth burn ZBC
function TestChain33ToEthZBCAssets() {
echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
echo -e "${GRE}=========== chain33 lock ZBC, eth burn ZBC ===========${NOC}"
result=$(${CLIA} ethereum balance -o "${ethTestAddr1}" -t "${ethereumZbcBridgeTokenAddr}")
cli_ret "${result}" "balance" ".balance" "0"
# 原来的地址金额
result=$(${Chain33Cli} evm query -a "${chain33ZbcERC20TokenAddr}" -c "${chain33BridgeBank}" -b "balanceOf(${chain33BridgeBank})")
is_equal "${result}" "0"
# chain33 lock ZBC
hash=$(${Chain33Cli} send evm call -f 1 -k "${chain33TestAddr1}" -e "${chain33BridgeBank}" -p "lock(${ethTestAddr1}, ${chain33ZbcERC20TokenAddr}, 900000000)" --chainID "${chain33ID}")
check_tx "${Chain33Cli}" "${hash}"
# chain33BridgeBank 是否增加了 9
result=$(${Chain33Cli} evm query -a "${chain33ZbcERC20TokenAddr}" -c "${chain33BridgeBank}" -b "balanceOf(${chain33BridgeBank})")
is_equal "${result}" "900000000"
sleep 4
# eth 这端 金额是否增加了 9
result=$(${CLIA} ethereum balance -o "${ethTestAddr1}" -t "${ethereumZbcBridgeTokenAddr}")
cli_ret "${result}" "balance" ".balance" "9"
# eth burn
result=$(${CLIA} ethereum burn -m 8 -k "${ethTestAddrKey1}" -r "${chain33ReceiverAddr}" -t "${ethereumZbcBridgeTokenAddr}") #--node_addr https://ropsten.infura.io/v3/9e83f296716142ffbaeaafc05790f26c)
cli_ret "${result}" "burn"
sleep 4
# eth 这端 金额是否减少了 1
result=$(${CLIA} ethereum balance -o "${ethTestAddr1}" -t "${ethereumZbcBridgeTokenAddr}")
cli_ret "${result}" "balance" ".balance" "1"
sleep ${maturityDegree}
# 接收的地址金额 变成了 8
result=$(${Chain33Cli} evm query -a "${chain33ZbcERC20TokenAddr}" -c "${chain33ReceiverAddr}" -b "balanceOf(${chain33ReceiverAddr})")
is_equal "${result}" "800000000"
# chain33BridgeBank 是否减少了 1
result=$(${Chain33Cli} evm query -a "${chain33ZbcERC20TokenAddr}" -c "${chain33BridgeBank}" -b "balanceOf(${chain33BridgeBank})")
is_equal "${result}" "100000000"
echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
}
#function TestChain33ToEthZBCAssets() {
# echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
# echo -e "${GRE}=========== chain33 lock ZBC, eth burn ZBC ===========${NOC}"
# result=$(${CLIA} ethereum balance -o "${ethTestAddr1}" -t "${ethereumZbcBridgeTokenAddr}")
# cli_ret "${result}" "balance" ".balance" "0"
#
# # 原来的地址金额
# result=$(${Chain33Cli} evm query -a "${chain33ZbcERC20TokenAddr}" -c "${chain33BridgeBank}" -b "balanceOf(${chain33BridgeBank})")
# is_equal "${result}" "0"
#
# # chain33 lock ZBC
# hash=$(${Chain33Cli} send evm call -f 1 -k "${chain33TestAddr1}" -e "${chain33BridgeBank}" -p "lock(${ethTestAddr1}, ${chain33ZbcERC20TokenAddr}, 900000000)" --chainID "${chain33ID}")
# check_tx "${Chain33Cli}" "${hash}"
#
# # chain33BridgeBank 是否增加了 9
# result=$(${Chain33Cli} evm query -a "${chain33ZbcERC20TokenAddr}" -c "${chain33BridgeBank}" -b "balanceOf(${chain33BridgeBank})")
# is_equal "${result}" "900000000"
#
# sleep 4
#
# # eth 这端 金额是否增加了 9
# result=$(${CLIA} ethereum balance -o "${ethTestAddr1}" -t "${ethereumZbcBridgeTokenAddr}")
# cli_ret "${result}" "balance" ".balance" "9"
#
# # eth burn
# result=$(${CLIA} ethereum burn -m 8 -k "${ethTestAddrKey1}" -r "${chain33ReceiverAddr}" -t "${ethereumZbcBridgeTokenAddr}") #--node_addr https://ropsten.infura.io/v3/9e83f296716142ffbaeaafc05790f26c)
# cli_ret "${result}" "burn"
#
# sleep 4
#
# # eth 这端 金额是否减少了 1
# result=$(${CLIA} ethereum balance -o "${ethTestAddr1}" -t "${ethereumZbcBridgeTokenAddr}")
# cli_ret "${result}" "balance" ".balance" "1"
#
# sleep ${maturityDegree}
#
# # 接收的地址金额 变成了 8
# result=$(${Chain33Cli} evm query -a "${chain33ZbcERC20TokenAddr}" -c "${chain33ReceiverAddr}" -b "balanceOf(${chain33ReceiverAddr})")
# is_equal "${result}" "800000000"
#
# # chain33BridgeBank 是否减少了 1
# result=$(${Chain33Cli} evm query -a "${chain33ZbcERC20TokenAddr}" -c "${chain33BridgeBank}" -b "balanceOf(${chain33BridgeBank})")
# is_equal "${result}" "100000000"
#
# echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
#}
# eth to chain33 在以太坊上锁定 ETH 资产,然后在 chain33 上 burn
function TestETH2Chain33Assets() {
echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
echo -e "${GRE}=========== eth to chain33 在以太坊上锁定 ETH 资产,然后在 chain33 上 burn ===========${NOC}"
......@@ -334,75 +323,75 @@ function TestETH2Chain33Assets() {
echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
}
function TestETH2Chain33Byc() {
echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
echo -e "${GRE}=========== eth to chain33 在以太坊上锁定 byc 资产,然后在 chain33 上 burn ===========${NOC}"
# 查询 ETH 这端 bridgeBank 地址原来是 0
result=$(${CLIA} ethereum balance -o "${ethBridgeBank}" -t "${ethereumBycERC20TokenAddr}")
cli_ret "${result}" "balance" ".balance" "0"
# ETH 这端 lock 7个 YCC
result=$(${CLIA} ethereum lock -m 7 -k "${ethTestAddrKey1}" -r "${chain33ReceiverAddr}" -t "${ethereumBycERC20TokenAddr}")
cli_ret "${result}" "lock"
# eth 等待 2 个区块
sleep 4
# 查询 ETH 这端 bridgeBank 地址 7 YCC
result=$(${CLIA} ethereum balance -o "${ethBridgeBank}" -t "${ethereumBycERC20TokenAddr}")
cli_ret "${result}" "balance" ".balance" "7"
sleep ${maturityDegree}
# chain33 chain33EthBridgeTokenAddr(ETH合约中)查询 lock 金额
result=$(${Chain33Cli} evm query -a "${chain33BycBridgeTokenAddr}" -c "${chain33TestAddr1}" -b "balanceOf(${chain33ReceiverAddr})")
# 结果是 7 * le8
is_equal "${result}" "700000000"
# 原来的数额 0
result=$(${CLIA} ethereum balance -o "${ethReceiverAddr1}" -t "${ethereumBycERC20TokenAddr}")
cli_ret "${result}" "balance" ".balance" "0"
echo '#5.burn YCC from Chain33 YCC(Chain33)-----> Ethereum'
result=$(${CLIA} chain33 burn -m 5 -k "${chain33ReceiverAddrKey}" -r "${ethReceiverAddr1}" -t "${chain33BycBridgeTokenAddr}")
cli_ret "${result}" "burn"
sleep ${maturityDegree}
echo "check the balance on chain33"
result=$(${Chain33Cli} evm query -a "${chain33BycBridgeTokenAddr}" -c "${chain33TestAddr1}" -b "balanceOf(${chain33ReceiverAddr})")
# 结果是 7-5 * le8
is_equal "${result}" "200000000"
# 查询 ETH 这端 bridgeBank 地址 2
result=$(${CLIA} ethereum balance -o "${ethBridgeBank}" -t "${ethereumBycERC20TokenAddr}")
cli_ret "${result}" "balance" ".balance" "2"
# 更新后的金额 5
result=$(${CLIA} ethereum balance -o "${ethReceiverAddr1}" -t "${ethereumBycERC20TokenAddr}")
cli_ret "${result}" "balance" ".balance" "5"
echo '#5.burn YCC from Chain33 YCC(Chain33)-----> Ethereum'
result=$(${CLIA} chain33 burn -m 2 -k "${chain33ReceiverAddrKey}" -r "${ethReceiverAddr1}" -t "${chain33BycBridgeTokenAddr}")
cli_ret "${result}" "burn"
sleep ${maturityDegree}
echo "check the balance on chain33"
result=$(${Chain33Cli} evm query -a "${chain33BycBridgeTokenAddr}" -c "${chain33TestAddr1}" -b "balanceOf(${chain33ReceiverAddr})")
# 结果是 7-5 * le8
is_equal "${result}" "0"
# 查询 ETH 这端 bridgeBank 地址 0
result=$(${CLIA} ethereum balance -o "${ethBridgeBank}" -t "${ethereumBycERC20TokenAddr}")
cli_ret "${result}" "balance" ".balance" "0"
# 更新后的金额 5
result=$(${CLIA} ethereum balance -o "${ethReceiverAddr1}" -t "${ethereumBycERC20TokenAddr}")
cli_ret "${result}" "balance" ".balance" "7"
echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
}
#function TestETH2Chain33Byc() {
# echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
# echo -e "${GRE}=========== eth to chain33 在以太坊上锁定 byc 资产,然后在 chain33 上 burn ===========${NOC}"
# # 查询 ETH 这端 bridgeBank 地址原来是 0
# result=$(${CLIA} ethereum balance -o "${ethBridgeBank}" -t "${ethereumBycERC20TokenAddr}")
# cli_ret "${result}" "balance" ".balance" "0"
#
# # ETH 这端 lock 7个 YCC
# result=$(${CLIA} ethereum lock -m 7 -k "${ethTestAddrKey1}" -r "${chain33ReceiverAddr}" -t "${ethereumBycERC20TokenAddr}")
# cli_ret "${result}" "lock"
#
# # eth 等待 2 个区块
# sleep 4
#
# # 查询 ETH 这端 bridgeBank 地址 7 YCC
# result=$(${CLIA} ethereum balance -o "${ethBridgeBank}" -t "${ethereumBycERC20TokenAddr}")
# cli_ret "${result}" "balance" ".balance" "7"
#
# sleep ${maturityDegree}
#
# # chain33 chain33EthBridgeTokenAddr(ETH合约中)查询 lock 金额
# result=$(${Chain33Cli} evm query -a "${chain33BycBridgeTokenAddr}" -c "${chain33TestAddr1}" -b "balanceOf(${chain33ReceiverAddr})")
# # 结果是 7 * le8
# is_equal "${result}" "700000000"
#
# # 原来的数额 0
# result=$(${CLIA} ethereum balance -o "${ethReceiverAddr1}" -t "${ethereumBycERC20TokenAddr}")
# cli_ret "${result}" "balance" ".balance" "0"
#
# echo '#5.burn YCC from Chain33 YCC(Chain33)-----> Ethereum'
# result=$(${CLIA} chain33 burn -m 5 -k "${chain33ReceiverAddrKey}" -r "${ethReceiverAddr1}" -t "${chain33BycBridgeTokenAddr}")
# cli_ret "${result}" "burn"
#
# sleep ${maturityDegree}
#
# echo "check the balance on chain33"
# result=$(${Chain33Cli} evm query -a "${chain33BycBridgeTokenAddr}" -c "${chain33TestAddr1}" -b "balanceOf(${chain33ReceiverAddr})")
# # 结果是 7-5 * le8
# is_equal "${result}" "200000000"
#
# # 查询 ETH 这端 bridgeBank 地址 2
# result=$(${CLIA} ethereum balance -o "${ethBridgeBank}" -t "${ethereumBycERC20TokenAddr}")
# cli_ret "${result}" "balance" ".balance" "2"
#
# # 更新后的金额 5
# result=$(${CLIA} ethereum balance -o "${ethReceiverAddr1}" -t "${ethereumBycERC20TokenAddr}")
# cli_ret "${result}" "balance" ".balance" "5"
#
# echo '#5.burn YCC from Chain33 YCC(Chain33)-----> Ethereum'
# result=$(${CLIA} chain33 burn -m 2 -k "${chain33ReceiverAddrKey}" -r "${ethReceiverAddr1}" -t "${chain33BycBridgeTokenAddr}")
# cli_ret "${result}" "burn"
#
# sleep ${maturityDegree}
#
# echo "check the balance on chain33"
# result=$(${Chain33Cli} evm query -a "${chain33BycBridgeTokenAddr}" -c "${chain33TestAddr1}" -b "balanceOf(${chain33ReceiverAddr})")
# # 结果是 7-5 * le8
# is_equal "${result}" "0"
#
# # 查询 ETH 这端 bridgeBank 地址 0
# result=$(${CLIA} ethereum balance -o "${ethBridgeBank}" -t "${ethereumBycERC20TokenAddr}")
# cli_ret "${result}" "balance" ".balance" "0"
#
# # 更新后的金额 5
# result=$(${CLIA} ethereum balance -o "${ethReceiverAddr1}" -t "${ethereumBycERC20TokenAddr}")
# cli_ret "${result}" "balance" ".balance" "7"
#
# echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
#}
function TestETH2Chain33USDT() {
echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
......@@ -492,22 +481,22 @@ function offline_set_offline_token_Bty() {
}
# shellcheck disable=SC2120
function offline_set_offline_token_Chain33Ycc() {
echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
echo -e "${GRE}===== chain33 端 configLockedTokenOfflineSave ERC20 YCC ======${NOC}"
# echo '2:#配置自动转离线钱包(YCC, 100, 60%)'
local threshold=10000000000
local percents=60
if [[ $# -eq 2 ]]; then
threshold=$1
percents=$2
fi
# shellcheck disable=SC2086
${Boss4xCLI} chain33 offline set_offline_token -c "${chain33BridgeBank}" -t "${chain33YccERC20TokenAddr}" -s YCC -m ${threshold} -p ${percents} -k "${chain33DeployKey}" --chainID "${chain33ID}"
chain33_offline_send "chain33_set_offline_token.txt"
echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
}
#function offline_set_offline_token_Chain33Ycc() {
# echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
# echo -e "${GRE}===== chain33 端 configLockedTokenOfflineSave ERC20 YCC ======${NOC}"
# # echo '2:#配置自动转离线钱包(YCC, 100, 60%)'
# local threshold=10000000000
# local percents=60
# if [[ $# -eq 2 ]]; then
# threshold=$1
# percents=$2
# fi
# # shellcheck disable=SC2086
# ${Boss4xCLI} chain33 offline set_offline_token -c "${chain33BridgeBank}" -t "${chain33YccERC20TokenAddr}" -s YCC -m ${threshold} -p ${percents} -k "${chain33DeployKey}" --chainID "${chain33ID}"
# chain33_offline_send "chain33_set_offline_token.txt"
#
# echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
#}
# shellcheck disable=SC2120
function offline_set_offline_token_Eth() {
......@@ -526,22 +515,23 @@ function offline_set_offline_token_Eth() {
}
# shellcheck disable=SC2120
function offline_set_offline_token_EthByc() {
echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
local threshold=100
local percents=40
if [[ $# -eq 2 ]]; then
threshold=$1
percents=$2
fi
# shellcheck disable=SC2086
${Boss4xCLI} ethereum offline set_offline_token -s BYC -m ${threshold} -p ${percents} -t "${ethereumBycERC20TokenAddr}" -c "${ethBridgeBank}" -d "${ethDeployAddr}"
ethereum_offline_sign_send "set_offline_token.txt"
echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
}
#function offline_set_offline_token_EthByc() {
# echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
# local threshold=100
# local percents=40
# if [[ $# -eq 2 ]]; then
# threshold=$1
# percents=$2
# fi
# # shellcheck disable=SC2086
# ${Boss4xCLI} ethereum offline set_offline_token -s BYC -m ${threshold} -p ${percents} -t "${ethereumBycERC20TokenAddr}" -c "${ethBridgeBank}" -d "${ethDeployAddr}"
# ethereum_offline_sign_send "set_offline_token.txt"
#
# echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
#}
# shellcheck disable=SC2120
function offline_set_offline_token_EthUSDT() {
echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
local threshold=100
......@@ -557,32 +547,32 @@ function offline_set_offline_token_EthUSDT() {
echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
}
function offline_transfer_multisign_Bty_test() {
echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
# transfer test
# shellcheck disable=SC2154
${Boss4xCLI} chain33 offline create_multisign_transfer -a 50 -r "${chain33BridgeBank}" -m "${multisignChain33Addr}"
# shellcheck disable=SC2154
${Boss4xCLI} chain33 offline multisign_transfer -k "${chain33DeployKey}" -s "${chain33MultisignKeyA},${chain33MultisignKeyB},${chain33MultisignKeyC},${chain33MultisignKeyD}" --chainID "${chain33ID}"
chain33_offline_send "multisign_transfer.txt"
sleep 10
result=$(${Chain33Cli} asset balance -a "${chain33BridgeBank}" --asset_exec paracross --asset_symbol coins.bty -e user.p.para.evm | jq -r .balance)
is_equal "${result}" "103.2500"
result=$(${Chain33Cli} asset balance -a "${multisignChain33Addr}" --asset_exec paracross --asset_symbol coins.bty -e user.p.para.evm | jq -r .balance)
is_equal "${result}" "59.7500"
# shellcheck disable=SC2154
${Boss4xCLI} chain33 offline create_multisign_transfer -a 10 -r "${chain33MultisignA}" -m "${multisignChain33Addr}"
# shellcheck disable=SC2154
${Boss4xCLI} chain33 offline multisign_transfer -k "${chain33DeployKey}" -s "${chain33MultisignKeyA},${chain33MultisignKeyB},${chain33MultisignKeyC},${chain33MultisignKeyD}" --chainID "${chain33ID}"
chain33_offline_send "multisign_transfer.txt"
sleep 10
result=$(${Chain33Cli} asset balance -a "${chain33MultisignA}" --asset_exec paracross --asset_symbol coins.bty -e user.p.para.evm | jq -r .balance)
is_equal "${result}" "10.0000"
result=$(${Chain33Cli} asset balance -a "${multisignChain33Addr}" --asset_exec paracross --asset_symbol coins.bty -e user.p.para.evm | jq -r .balance)
is_equal "${result}" "49.7500"
echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
}
#function offline_transfer_multisign_Bty_test() {
# echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
# # transfer test
# # shellcheck disable=SC2154
# ${Boss4xCLI} chain33 offline create_multisign_transfer -a 50 -r "${chain33BridgeBank}" -m "${multisignChain33Addr}"
# # shellcheck disable=SC2154
# ${Boss4xCLI} chain33 offline multisign_transfer -k "${chain33DeployKey}" -s "${chain33MultisignKeyA},${chain33MultisignKeyB},${chain33MultisignKeyC},${chain33MultisignKeyD}" --chainID "${chain33ID}"
# chain33_offline_send "multisign_transfer.txt"
# sleep 10
# result=$(${Chain33Cli} asset balance -a "${chain33BridgeBank}" --asset_exec paracross --asset_symbol coins.bty -e user.p.para.evm | jq -r .balance)
# is_equal "${result}" "103.2500"
# result=$(${Chain33Cli} asset balance -a "${multisignChain33Addr}" --asset_exec paracross --asset_symbol coins.bty -e user.p.para.evm | jq -r .balance)
# is_equal "${result}" "59.7500"
#
# # shellcheck disable=SC2154
# ${Boss4xCLI} chain33 offline create_multisign_transfer -a 10 -r "${chain33MultisignA}" -m "${multisignChain33Addr}"
# # shellcheck disable=SC2154
# ${Boss4xCLI} chain33 offline multisign_transfer -k "${chain33DeployKey}" -s "${chain33MultisignKeyA},${chain33MultisignKeyB},${chain33MultisignKeyC},${chain33MultisignKeyD}" --chainID "${chain33ID}"
# chain33_offline_send "multisign_transfer.txt"
# sleep 10
# result=$(${Chain33Cli} asset balance -a "${chain33MultisignA}" --asset_exec paracross --asset_symbol coins.bty -e user.p.para.evm | jq -r .balance)
# is_equal "${result}" "10.0000"
# result=$(${Chain33Cli} asset balance -a "${multisignChain33Addr}" --asset_exec paracross --asset_symbol coins.bty -e user.p.para.evm | jq -r .balance)
# is_equal "${result}" "49.7500"
# echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
#}
function coins_cross_transfer() {
local key="${1}"
......@@ -660,21 +650,21 @@ function lockBty() {
echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
}
function lockChain33Ycc() {
echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
echo -e "${GRE}===== chain33 端 lock ERC20 YCC ======${NOC}"
# echo '2:#配置自动转离线钱包(YCC, 100, 60%)'
offline_set_offline_token_Chain33Ycc
lock_chain33_ycc_multisign 30 30 0
lock_chain33_ycc_multisign 70 40 60
lock_chain33_ycc_multisign 260 120 240
lock_chain33_ycc_multisign 10 52 318
# transfer test
offline_transfer_multisign_Chain33Ycc_test
echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
}
#function lockChain33Ycc() {
# echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
# echo -e "${GRE}===== chain33 端 lock ERC20 YCC ======${NOC}"
# # echo '2:#配置自动转离线钱包(YCC, 100, 60%)'
# offline_set_offline_token_Chain33Ycc
#
# lock_chain33_ycc_multisign 30 30 0
# lock_chain33_ycc_multisign 70 40 60
# lock_chain33_ycc_multisign 260 120 240
# lock_chain33_ycc_multisign 10 52 318
#
# # transfer test
# offline_transfer_multisign_Chain33Ycc_test
# echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
#}
function lockEth() {
echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
......@@ -695,26 +685,26 @@ function lockEth() {
echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
}
function lockEthByc() {
echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
echo -e "${GRE}===== ethereum 端 lock ERC20 Byc ======${NOC}"
# echo '2:#配置自动转离线钱包(ycc, 100, 40%)'
offline_set_offline_token_EthByc
# 重启 nonce 会不统一 要重启一下
restart_ebrelayerA
lock_ethereum_byc_multisign 70 70 0
lock_ethereum_byc_multisign 30 60 40
lock_ethereum_byc_multisign 60 72 88
# multisignEthAddr 要有手续费
${CLIA} ethereum transfer -k "${ethDeployKey}" -m 10 -r "${multisignEthAddr}"
sleep 10
# transfer
offline_transfer_multisign_EthByc
echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
}
#function lockEthByc() {
# echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
# echo -e "${GRE}===== ethereum 端 lock ERC20 Byc ======${NOC}"
# # echo '2:#配置自动转离线钱包(ycc, 100, 40%)'
# offline_set_offline_token_EthByc
# # 重启 nonce 会不统一 要重启一下
# restart_ebrelayerA
#
# lock_ethereum_byc_multisign 70 70 0
# lock_ethereum_byc_multisign 30 60 40
# lock_ethereum_byc_multisign 60 72 88
#
# # multisignEthAddr 要有手续费
# ${CLIA} ethereum transfer -k "${ethDeployKey}" -m 10 -r "${multisignEthAddr}"
# sleep 10
#
# # transfer
# offline_transfer_multisign_EthByc
# echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
#}
function lockEthUSDT() {
echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
......@@ -790,8 +780,8 @@ function StartDockerRelayerDeploy() {
InitAndOfflineDeploy
# 设置 ethereum symbol
${Boss4xCLI} ethereum offline set_symbol -s "ETH" -c "${ethBridgeBank}" -d "${ethDeployAddr}"
ethereum_offline_sign_send "set_symbol.txt"
# ${Boss4xCLI} ethereum offline set_symbol -s "ETH" -c "${ethBridgeBank}" -d "${ethDeployAddr}"
# ethereum_offline_sign_send "set_symbol.txt"
# 设置离线多签数据
Chain33Cli=${MainCli}
......@@ -821,12 +811,12 @@ function StartDockerRelayerDeploy() {
# InitTokenAddr
offline_create_bridge_token_eth_BTY
offline_create_bridge_token_chain33_ETH "ETH"
offline_deploy_erc20_eth_BYC
offline_create_bridge_token_chain33_BYC
offline_deploy_erc20_chain33_YCC
offline_create_bridge_token_eth_YCC
offline_deploy_erc20_chain33_ZBC
offline_create_bridge_token_eth_ZBC
# offline_deploy_erc20_eth_BYC
# offline_create_bridge_token_chain33_BYC
# offline_deploy_erc20_chain33_YCC
# offline_create_bridge_token_eth_YCC
# offline_deploy_erc20_chain33_ZBC
# offline_create_bridge_token_eth_ZBC
# offline_deploy_erc20_eth_USDT
offline_deploy_erc20_create_tether_usdt_USDT
offline_create_bridge_token_chain33_USDT
......@@ -834,10 +824,10 @@ function StartDockerRelayerDeploy() {
# shellcheck disable=SC2086
{
docker cp "${chain33EthBridgeTokenAddr}.abi" "${dockerNamePrefix}_ebrelayera_1":/root/${chain33EthBridgeTokenAddr}.abi
docker cp "${chain33BycBridgeTokenAddr}.abi" "${dockerNamePrefix}_ebrelayera_1":/root/${chain33BycBridgeTokenAddr}.abi
# docker cp "${chain33BycBridgeTokenAddr}.abi" "${dockerNamePrefix}_ebrelayera_1":/root/${chain33BycBridgeTokenAddr}.abi
docker cp "${chain33USDTBridgeTokenAddr}.abi" "${dockerNamePrefix}_ebrelayera_1":/root/${chain33USDTBridgeTokenAddr}.abi
docker cp "${chain33YccERC20TokenAddr}.abi" "${dockerNamePrefix}_ebrelayera_1":/root/${chain33YccERC20TokenAddr}.abi
docker cp "${ethereumYccBridgeTokenAddr}.abi" "${dockerNamePrefix}_ebrelayera_1":/root/${ethereumYccBridgeTokenAddr}.abi
# docker cp "${chain33YccERC20TokenAddr}.abi" "${dockerNamePrefix}_ebrelayera_1":/root/${chain33YccERC20TokenAddr}.abi
# docker cp "${ethereumYccBridgeTokenAddr}.abi" "${dockerNamePrefix}_ebrelayera_1":/root/${ethereumYccBridgeTokenAddr}.abi
}
# 重启,因为relayerA的验证人地址和部署人的地址是一样的,所以需要重新启动relayer,更新nonce
......@@ -855,14 +845,8 @@ function echo_addrs() {
echo -e "${GRE}chain33BtyERC20TokenAddr: ${chain33BtyERC20TokenAddr} ${NOC}"
echo -e "${GRE}chain33EthBridgeTokenAddr: ${chain33EthBridgeTokenAddr} ${NOC}"
echo -e "${GRE}ethereumBtyBridgeTokenAddr: ${ethereumBtyBridgeTokenAddr} ${NOC}"
echo -e "${GRE}ethereumBycERC20TokenAddr: ${ethereumBycERC20TokenAddr} ${NOC}"
echo -e "${GRE}chain33BycBridgeTokenAddr: ${chain33BycBridgeTokenAddr} ${NOC}"
echo -e "${GRE}ethereumUSDTERC20TokenAddr: ${ethereumUSDTERC20TokenAddr} ${NOC}"
echo -e "${GRE}chain33USDTBridgeTokenAddr: ${chain33USDTBridgeTokenAddr} ${NOC}"
echo -e "${GRE}chain33YccERC20TokenAddr: ${chain33YccERC20TokenAddr} ${NOC}"
echo -e "${GRE}ethereumYccBridgeTokenAddr: ${ethereumYccBridgeTokenAddr} ${NOC}"
echo -e "${GRE}chain33ZbcERC20TokenAddr: ${chain33ZbcERC20TokenAddr} ${NOC}"
echo -e "${GRE}ethereumZbcBridgeTokenAddr: ${ethereumZbcBridgeTokenAddr} ${NOC}"
echo -e "${GRE}multisignChain33Addr: ${multisignChain33Addr} ${NOC}"
echo -e "${GRE}multisignEthAddr: ${multisignEthAddr} ${NOC}"
# shellcheck disable=SC2154
......@@ -913,21 +897,15 @@ function test_all() {
Chain33Cli=${Para8901Cli}
TestChain33ToEthAssets
TestETH2Chain33Assets
TestChain33ToEthZBCAssets
TestETH2Chain33Byc
TestETH2Chain33USDT
Chain33Cli=${Para8901Cli}
lockBty
lockChain33Ycc
lockEth
lockEthByc
lockEthUSDT
# 离线多签地址转入阈值设大
offline_set_offline_token_Bty 100000000000000 10
offline_set_offline_token_Chain33Ycc 100000000000000 10
offline_set_offline_token_Eth 100000000000000 10
offline_set_offline_token_EthByc 100000000000000 10
offline_set_offline_token_EthUSDT 100000000000000 10
}
......@@ -70,17 +70,17 @@ function InitAndOfflineDeploy() {
# 在 Eth 上部署合约
# shellcheck disable=SC2154
${Boss4xCLI} ethereum offline create -p "25,25,25,25" -o "${ethDeployAddr}" -v "${ethValidatorAddra},${ethValidatorAddrb},${ethValidatorAddrc},${ethValidatorAddrd}"
${Boss4xCLI} ethereum offline create -s "ETH" -p "25,25,25,25" -o "${ethDeployAddr}" -v "${ethValidatorAddra},${ethValidatorAddrb},${ethValidatorAddrc},${ethValidatorAddrd}"
${Boss4xCLI} ethereum offline sign -k "${ethDeployKey}"
result=$(${Boss4xCLI} ethereum offline send -f "deploysigntxs.txt")
for i in {0..7}; do
hash=$(echo "${result}" | jq -r ".[$i].TxHash")
check_eth_tx "${hash}"
done
BridgeRegistryOnEth=$(echo "${result}" | jq -r ".[6].ContractAddr")
ethBridgeBank=$(echo "${result}" | jq -r ".[3].ContractAddr")
BridgeRegistryOnEth=$(echo "${result}" | jq -r ".[7].ContractAddr")
# shellcheck disable=SC2034
multisignEthAddr=$(echo "${result}" | jq -r ".[7].ContractAddr")
multisignEthAddr=$(echo "${result}" | jq -r ".[8].ContractAddr")
${CLIA} ethereum multisign set_multiSign -a "${multisignEthAddr}"
# 拷贝 BridgeRegistry.abi 和 BridgeBank.abi
......
......@@ -16,7 +16,6 @@ message SyncTxConfig {
int64 startSyncHeight = 10;
int64 startSyncSequence = 11;
string startSyncHash = 12;
repeated string contracts = 13;
}
message Log {
......
......@@ -5,8 +5,6 @@ ChainName="" #链的名称,用来区分主链和平行链,如user.p.xxx.,必
JrpcBindAddr="localhost:9901"
EthProviderCli="http://127.0.0.1:7545"
EthProvider="ws://127.0.0.1:7545/"
#EthProvider="wss://rinkeby.infura.io/ws/v3/404eb4acc421426ebeb6e92c7ce9a270"
#EthProvider="wss://ropsten.infura.io/ws/v3/404eb4acc421426ebeb6e92c7ce9a270"
EthMaturityDegree=10
EthBlockFetchPeriod=5000
BridgeRegistryOnChain33=""
......@@ -22,11 +20,7 @@ dbdriver="leveldb"
dbPath="datadir"
dbCache=64
fetchHeightPeriodMs=5000
contracts=["165UZpSHske8hryahjM91kAWMJRW47Hn7E"]
#如果需要配置起始的块的信息,则为了保持一致性,三项缺一不可,或者都不配置
#startSyncHeight=24531
#startSyncSequence=24531
#startSyncHash="0xb96168940ceebc12dcf4a4911ec8f509344f5c8591af37a49f4fb5f433093d2e"
startSyncHeight=0
startSyncSequence=0
startSyncHash=""
......@@ -34,8 +28,6 @@ startSyncHash=""
[deploy4chain33]
#合约部署人员私钥,用于部署合约时签名使用
operatorAddr="14KEKbYtKKQm4wMthSK9J4La4nAiidGozt"
#合约部署人员私钥,用于部署合约时签名使用
deployerPrivateKey="0xcc38546e9e659d15e6b4893f0ab32a06d103931a8230b0bde71459d2b27d6944"
#验证人地址,至少配置3个以上,即大于等于3个
validatorsAddr=["14KEKbYtKKQm4wMthSK9J4La4nAiidGozt", "13KTf57aCkVVJYNJBXBBveiA5V811SrLcT", "1JQwQWsShTHC4zxHzbUfYQK4kRBriUQdEe", "1NHuKqoKe3hyv52PF8XBAyaTmJWAqA2Jbb"]
#验证人权重
......@@ -44,8 +36,6 @@ initPowers=[96, 1, 1, 1]
[deploy]
#合约部署人员私钥,用于部署合约时签名使用
operatorAddr="0x8afdadfc88a1087c9a1d6c0f5dd04634b87f303a"
#合约部署人员私钥,用于部署合约时签名使用
deployerPrivateKey="8656d2bc732a8a816a461ba5e2d8aac7c7f85c26a813df30d5327210465eb230"
#验证人地址,至少配置3个以上,即大于等于3个
validatorsAddr=["0x92C8b16aFD6d423652559C6E266cBE1c29Bfd84f", "0x0df9a824699bc5878232c9e612fe1a5346a5a368", "0xcb074cb21cdddf3ce9c3c0a7ac4497d633c9d9f1", "0xd9dab021e74ecf475788ed7b61356056b2095830"]
#验证人权重
......
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.23.0
// protoc v3.9.1
// source: config.proto
package types
import (
reflect "reflect"
sync "sync"
fmt "fmt"
proto "github.com/golang/protobuf/proto"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
math "math"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion that a sufficiently up-to-date version
// of the legacy proto package is being used.
const _ = proto.ProtoPackageIsVersion4
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
type SyncTxConfig struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Chain33Host string `protobuf:"bytes,1,opt,name=chain33host,proto3" json:"chain33host,omitempty"`
PushHost string `protobuf:"bytes,2,opt,name=pushHost,proto3" json:"pushHost,omitempty"`
PushName string `protobuf:"bytes,3,opt,name=pushName,proto3" json:"pushName,omitempty"`
PushBind string `protobuf:"bytes,4,opt,name=pushBind,proto3" json:"pushBind,omitempty"`
MaturityDegree int32 `protobuf:"varint,5,opt,name=maturityDegree,proto3" json:"maturityDegree,omitempty"`
Dbdriver string `protobuf:"bytes,6,opt,name=dbdriver,proto3" json:"dbdriver,omitempty"` //数据库类型
DbPath string `protobuf:"bytes,7,opt,name=dbPath,proto3" json:"dbPath,omitempty"` //数据库存储目录
DbCache int32 `protobuf:"varint,8,opt,name=dbCache,proto3" json:"dbCache,omitempty"` //数据库缓存大小
Dbdriver string `protobuf:"bytes,6,opt,name=dbdriver,proto3" json:"dbdriver,omitempty"`
DbPath string `protobuf:"bytes,7,opt,name=dbPath,proto3" json:"dbPath,omitempty"`
DbCache int32 `protobuf:"varint,8,opt,name=dbCache,proto3" json:"dbCache,omitempty"`
FetchHeightPeriodMs int64 `protobuf:"varint,9,opt,name=fetchHeightPeriodMs,proto3" json:"fetchHeightPeriodMs,omitempty"`
StartSyncHeight int64 `protobuf:"varint,10,opt,name=startSyncHeight,proto3" json:"startSyncHeight,omitempty"`
StartSyncSequence int64 `protobuf:"varint,11,opt,name=startSyncSequence,proto3" json:"startSyncSequence,omitempty"`
StartSyncHash string `protobuf:"bytes,12,opt,name=startSyncHash,proto3" json:"startSyncHash,omitempty"`
Contracts []string `protobuf:"bytes,13,rep,name=contracts,proto3" json:"contracts,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (x *SyncTxConfig) Reset() {
*x = SyncTxConfig{}
if protoimpl.UnsafeEnabled {
mi := &file_config_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (m *SyncTxConfig) Reset() { *m = SyncTxConfig{} }
func (m *SyncTxConfig) String() string { return proto.CompactTextString(m) }
func (*SyncTxConfig) ProtoMessage() {}
func (*SyncTxConfig) Descriptor() ([]byte, []int) {
return fileDescriptor_3eaf2c85e69e9ea4, []int{0}
}
func (x *SyncTxConfig) String() string {
return protoimpl.X.MessageStringOf(x)
func (m *SyncTxConfig) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SyncTxConfig.Unmarshal(m, b)
}
func (*SyncTxConfig) ProtoMessage() {}
func (x *SyncTxConfig) ProtoReflect() protoreflect.Message {
mi := &file_config_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
func (m *SyncTxConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_SyncTxConfig.Marshal(b, m, deterministic)
}
// Deprecated: Use SyncTxConfig.ProtoReflect.Descriptor instead.
func (*SyncTxConfig) Descriptor() ([]byte, []int) {
return file_config_proto_rawDescGZIP(), []int{0}
func (m *SyncTxConfig) XXX_Merge(src proto.Message) {
xxx_messageInfo_SyncTxConfig.Merge(m, src)
}
func (m *SyncTxConfig) XXX_Size() int {
return xxx_messageInfo_SyncTxConfig.Size(m)
}
func (m *SyncTxConfig) XXX_DiscardUnknown() {
xxx_messageInfo_SyncTxConfig.DiscardUnknown(m)
}
func (x *SyncTxConfig) GetChain33Host() string {
if x != nil {
return x.Chain33Host
var xxx_messageInfo_SyncTxConfig proto.InternalMessageInfo
func (m *SyncTxConfig) GetChain33Host() string {
if m != nil {
return m.Chain33Host
}
return ""
}
func (x *SyncTxConfig) GetPushHost() string {
if x != nil {
return x.PushHost
func (m *SyncTxConfig) GetPushHost() string {
if m != nil {
return m.PushHost
}
return ""
}
func (x *SyncTxConfig) GetPushName() string {
if x != nil {
return x.PushName
func (m *SyncTxConfig) GetPushName() string {
if m != nil {
return m.PushName
}
return ""
}
func (x *SyncTxConfig) GetPushBind() string {
if x != nil {
return x.PushBind
func (m *SyncTxConfig) GetPushBind() string {
if m != nil {
return m.PushBind
}
return ""
}
func (x *SyncTxConfig) GetMaturityDegree() int32 {
if x != nil {
return x.MaturityDegree
func (m *SyncTxConfig) GetMaturityDegree() int32 {
if m != nil {
return m.MaturityDegree
}
return 0
}
func (x *SyncTxConfig) GetDbdriver() string {
if x != nil {
return x.Dbdriver
func (m *SyncTxConfig) GetDbdriver() string {
if m != nil {
return m.Dbdriver
}
return ""
}
func (x *SyncTxConfig) GetDbPath() string {
if x != nil {
return x.DbPath
func (m *SyncTxConfig) GetDbPath() string {
if m != nil {
return m.DbPath
}
return ""
}
func (x *SyncTxConfig) GetDbCache() int32 {
if x != nil {
return x.DbCache
func (m *SyncTxConfig) GetDbCache() int32 {
if m != nil {
return m.DbCache
}
return 0
}
func (x *SyncTxConfig) GetFetchHeightPeriodMs() int64 {
if x != nil {
return x.FetchHeightPeriodMs
func (m *SyncTxConfig) GetFetchHeightPeriodMs() int64 {
if m != nil {
return m.FetchHeightPeriodMs
}
return 0
}
func (x *SyncTxConfig) GetStartSyncHeight() int64 {
if x != nil {
return x.StartSyncHeight
func (m *SyncTxConfig) GetStartSyncHeight() int64 {
if m != nil {
return m.StartSyncHeight
}
return 0
}
func (x *SyncTxConfig) GetStartSyncSequence() int64 {
if x != nil {
return x.StartSyncSequence
func (m *SyncTxConfig) GetStartSyncSequence() int64 {
if m != nil {
return m.StartSyncSequence
}
return 0
}
func (x *SyncTxConfig) GetStartSyncHash() string {
if x != nil {
return x.StartSyncHash
func (m *SyncTxConfig) GetStartSyncHash() string {
if m != nil {
return m.StartSyncHash
}
return ""
}
func (x *SyncTxConfig) GetContracts() []string {
if x != nil {
return x.Contracts
}
return nil
}
type Log struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Loglevel string `protobuf:"bytes,1,opt,name=loglevel,proto3" json:"loglevel,omitempty"`
LogConsoleLevel string `protobuf:"bytes,2,opt,name=logConsoleLevel,proto3" json:"logConsoleLevel,omitempty"`
LogFile string `protobuf:"bytes,3,opt,name=logFile,proto3" json:"logFile,omitempty"`
......@@ -184,119 +158,111 @@ type Log struct {
Compress bool `protobuf:"varint,8,opt,name=compress,proto3" json:"compress,omitempty"`
CallerFile bool `protobuf:"varint,9,opt,name=callerFile,proto3" json:"callerFile,omitempty"`
CallerFunction bool `protobuf:"varint,10,opt,name=callerFunction,proto3" json:"callerFunction,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (x *Log) Reset() {
*x = Log{}
if protoimpl.UnsafeEnabled {
mi := &file_config_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (m *Log) Reset() { *m = Log{} }
func (m *Log) String() string { return proto.CompactTextString(m) }
func (*Log) ProtoMessage() {}
func (*Log) Descriptor() ([]byte, []int) {
return fileDescriptor_3eaf2c85e69e9ea4, []int{1}
}
func (x *Log) String() string {
return protoimpl.X.MessageStringOf(x)
func (m *Log) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Log.Unmarshal(m, b)
}
func (*Log) ProtoMessage() {}
func (x *Log) ProtoReflect() protoreflect.Message {
mi := &file_config_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
func (m *Log) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Log.Marshal(b, m, deterministic)
}
// Deprecated: Use Log.ProtoReflect.Descriptor instead.
func (*Log) Descriptor() ([]byte, []int) {
return file_config_proto_rawDescGZIP(), []int{1}
func (m *Log) XXX_Merge(src proto.Message) {
xxx_messageInfo_Log.Merge(m, src)
}
func (m *Log) XXX_Size() int {
return xxx_messageInfo_Log.Size(m)
}
func (m *Log) XXX_DiscardUnknown() {
xxx_messageInfo_Log.DiscardUnknown(m)
}
func (x *Log) GetLoglevel() string {
if x != nil {
return x.Loglevel
var xxx_messageInfo_Log proto.InternalMessageInfo
func (m *Log) GetLoglevel() string {
if m != nil {
return m.Loglevel
}
return ""
}
func (x *Log) GetLogConsoleLevel() string {
if x != nil {
return x.LogConsoleLevel
func (m *Log) GetLogConsoleLevel() string {
if m != nil {
return m.LogConsoleLevel
}
return ""
}
func (x *Log) GetLogFile() string {
if x != nil {
return x.LogFile
func (m *Log) GetLogFile() string {
if m != nil {
return m.LogFile
}
return ""
}
func (x *Log) GetMaxFileSize() uint32 {
if x != nil {
return x.MaxFileSize
func (m *Log) GetMaxFileSize() uint32 {
if m != nil {
return m.MaxFileSize
}
return 0
}
func (x *Log) GetMaxBackups() uint32 {
if x != nil {
return x.MaxBackups
func (m *Log) GetMaxBackups() uint32 {
if m != nil {
return m.MaxBackups
}
return 0
}
func (x *Log) GetMaxAge() uint32 {
if x != nil {
return x.MaxAge
func (m *Log) GetMaxAge() uint32 {
if m != nil {
return m.MaxAge
}
return 0
}
func (x *Log) GetLocalTime() bool {
if x != nil {
return x.LocalTime
func (m *Log) GetLocalTime() bool {
if m != nil {
return m.LocalTime
}
return false
}
func (x *Log) GetCompress() bool {
if x != nil {
return x.Compress
func (m *Log) GetCompress() bool {
if m != nil {
return m.Compress
}
return false
}
func (x *Log) GetCallerFile() bool {
if x != nil {
return x.CallerFile
func (m *Log) GetCallerFile() bool {
if m != nil {
return m.CallerFile
}
return false
}
func (x *Log) GetCallerFunction() bool {
if x != nil {
return x.CallerFunction
func (m *Log) GetCallerFunction() bool {
if m != nil {
return m.CallerFunction
}
return false
}
type RelayerConfig struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
SyncTxConfig *SyncTxConfig `protobuf:"bytes,2,opt,name=syncTxConfig,proto3" json:"syncTxConfig,omitempty"`
Log *Log `protobuf:"bytes,3,opt,name=log,proto3" json:"log,omitempty"`
JrpcBindAddr string `protobuf:"bytes,4,opt,name=jrpcBindAddr,proto3" json:"jrpcBindAddr,omitempty"` // Jrpc服务地址
JrpcBindAddr string `protobuf:"bytes,4,opt,name=jrpcBindAddr,proto3" json:"jrpcBindAddr,omitempty"`
EthProvider string `protobuf:"bytes,5,opt,name=ethProvider,proto3" json:"ethProvider,omitempty"`
BridgeRegistry string `protobuf:"bytes,6,opt,name=bridgeRegistry,proto3" json:"bridgeRegistry,omitempty"`
Deploy *Deploy `protobuf:"bytes,7,opt,name=deploy,proto3" json:"deploy,omitempty"`
......@@ -307,143 +273,135 @@ type RelayerConfig struct {
BridgeRegistryOnChain33 string `protobuf:"bytes,12,opt,name=bridgeRegistryOnChain33,proto3" json:"bridgeRegistryOnChain33,omitempty"`
ChainName string `protobuf:"bytes,13,opt,name=chainName,proto3" json:"chainName,omitempty"`
ChainID4Chain33 int32 `protobuf:"varint,14,opt,name=chainID4Chain33,proto3" json:"chainID4Chain33,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (x *RelayerConfig) Reset() {
*x = RelayerConfig{}
if protoimpl.UnsafeEnabled {
mi := &file_config_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (m *RelayerConfig) Reset() { *m = RelayerConfig{} }
func (m *RelayerConfig) String() string { return proto.CompactTextString(m) }
func (*RelayerConfig) ProtoMessage() {}
func (*RelayerConfig) Descriptor() ([]byte, []int) {
return fileDescriptor_3eaf2c85e69e9ea4, []int{2}
}
func (x *RelayerConfig) String() string {
return protoimpl.X.MessageStringOf(x)
func (m *RelayerConfig) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RelayerConfig.Unmarshal(m, b)
}
func (*RelayerConfig) ProtoMessage() {}
func (x *RelayerConfig) ProtoReflect() protoreflect.Message {
mi := &file_config_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
func (m *RelayerConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_RelayerConfig.Marshal(b, m, deterministic)
}
// Deprecated: Use RelayerConfig.ProtoReflect.Descriptor instead.
func (*RelayerConfig) Descriptor() ([]byte, []int) {
return file_config_proto_rawDescGZIP(), []int{2}
func (m *RelayerConfig) XXX_Merge(src proto.Message) {
xxx_messageInfo_RelayerConfig.Merge(m, src)
}
func (m *RelayerConfig) XXX_Size() int {
return xxx_messageInfo_RelayerConfig.Size(m)
}
func (m *RelayerConfig) XXX_DiscardUnknown() {
xxx_messageInfo_RelayerConfig.DiscardUnknown(m)
}
func (x *RelayerConfig) GetTitle() string {
if x != nil {
return x.Title
var xxx_messageInfo_RelayerConfig proto.InternalMessageInfo
func (m *RelayerConfig) GetTitle() string {
if m != nil {
return m.Title
}
return ""
}
func (x *RelayerConfig) GetSyncTxConfig() *SyncTxConfig {
if x != nil {
return x.SyncTxConfig
func (m *RelayerConfig) GetSyncTxConfig() *SyncTxConfig {
if m != nil {
return m.SyncTxConfig
}
return nil
}
func (x *RelayerConfig) GetLog() *Log {
if x != nil {
return x.Log
func (m *RelayerConfig) GetLog() *Log {
if m != nil {
return m.Log
}
return nil
}
func (x *RelayerConfig) GetJrpcBindAddr() string {
if x != nil {
return x.JrpcBindAddr
func (m *RelayerConfig) GetJrpcBindAddr() string {
if m != nil {
return m.JrpcBindAddr
}
return ""
}
func (x *RelayerConfig) GetEthProvider() string {
if x != nil {
return x.EthProvider
func (m *RelayerConfig) GetEthProvider() string {
if m != nil {
return m.EthProvider
}
return ""
}
func (x *RelayerConfig) GetBridgeRegistry() string {
if x != nil {
return x.BridgeRegistry
func (m *RelayerConfig) GetBridgeRegistry() string {
if m != nil {
return m.BridgeRegistry
}
return ""
}
func (x *RelayerConfig) GetDeploy() *Deploy {
if x != nil {
return x.Deploy
func (m *RelayerConfig) GetDeploy() *Deploy {
if m != nil {
return m.Deploy
}
return nil
}
func (x *RelayerConfig) GetDeploy4Chain33() *Deploy {
if x != nil {
return x.Deploy4Chain33
func (m *RelayerConfig) GetDeploy4Chain33() *Deploy {
if m != nil {
return m.Deploy4Chain33
}
return nil
}
func (x *RelayerConfig) GetEthMaturityDegree() int32 {
if x != nil {
return x.EthMaturityDegree
func (m *RelayerConfig) GetEthMaturityDegree() int32 {
if m != nil {
return m.EthMaturityDegree
}
return 0
}
func (x *RelayerConfig) GetEthBlockFetchPeriod() int32 {
if x != nil {
return x.EthBlockFetchPeriod
func (m *RelayerConfig) GetEthBlockFetchPeriod() int32 {
if m != nil {
return m.EthBlockFetchPeriod
}
return 0
}
func (x *RelayerConfig) GetEthProviderCli() string {
if x != nil {
return x.EthProviderCli
func (m *RelayerConfig) GetEthProviderCli() string {
if m != nil {
return m.EthProviderCli
}
return ""
}
func (x *RelayerConfig) GetBridgeRegistryOnChain33() string {
if x != nil {
return x.BridgeRegistryOnChain33
func (m *RelayerConfig) GetBridgeRegistryOnChain33() string {
if m != nil {
return m.BridgeRegistryOnChain33
}
return ""
}
func (x *RelayerConfig) GetChainName() string {
if x != nil {
return x.ChainName
func (m *RelayerConfig) GetChainName() string {
if m != nil {
return m.ChainName
}
return ""
}
func (x *RelayerConfig) GetChainID4Chain33() int32 {
if x != nil {
return x.ChainID4Chain33
func (m *RelayerConfig) GetChainID4Chain33() int32 {
if m != nil {
return m.ChainID4Chain33
}
return 0
}
type SyncTxReceiptConfig struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Chain33Host string `protobuf:"bytes,1,opt,name=chain33host,proto3" json:"chain33host,omitempty"`
PushHost string `protobuf:"bytes,2,opt,name=pushHost,proto3" json:"pushHost,omitempty"`
PushName string `protobuf:"bytes,3,opt,name=pushName,proto3" json:"pushName,omitempty"`
......@@ -452,101 +410,93 @@ type SyncTxReceiptConfig struct {
StartSyncSequence int64 `protobuf:"varint,6,opt,name=startSyncSequence,proto3" json:"startSyncSequence,omitempty"`
StartSyncHash string `protobuf:"bytes,7,opt,name=startSyncHash,proto3" json:"startSyncHash,omitempty"`
Contracts []string `protobuf:"bytes,8,rep,name=contracts,proto3" json:"contracts,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (x *SyncTxReceiptConfig) Reset() {
*x = SyncTxReceiptConfig{}
if protoimpl.UnsafeEnabled {
mi := &file_config_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (m *SyncTxReceiptConfig) Reset() { *m = SyncTxReceiptConfig{} }
func (m *SyncTxReceiptConfig) String() string { return proto.CompactTextString(m) }
func (*SyncTxReceiptConfig) ProtoMessage() {}
func (*SyncTxReceiptConfig) Descriptor() ([]byte, []int) {
return fileDescriptor_3eaf2c85e69e9ea4, []int{3}
}
func (x *SyncTxReceiptConfig) String() string {
return protoimpl.X.MessageStringOf(x)
func (m *SyncTxReceiptConfig) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SyncTxReceiptConfig.Unmarshal(m, b)
}
func (*SyncTxReceiptConfig) ProtoMessage() {}
func (x *SyncTxReceiptConfig) ProtoReflect() protoreflect.Message {
mi := &file_config_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
func (m *SyncTxReceiptConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_SyncTxReceiptConfig.Marshal(b, m, deterministic)
}
// Deprecated: Use SyncTxReceiptConfig.ProtoReflect.Descriptor instead.
func (*SyncTxReceiptConfig) Descriptor() ([]byte, []int) {
return file_config_proto_rawDescGZIP(), []int{3}
func (m *SyncTxReceiptConfig) XXX_Merge(src proto.Message) {
xxx_messageInfo_SyncTxReceiptConfig.Merge(m, src)
}
func (m *SyncTxReceiptConfig) XXX_Size() int {
return xxx_messageInfo_SyncTxReceiptConfig.Size(m)
}
func (m *SyncTxReceiptConfig) XXX_DiscardUnknown() {
xxx_messageInfo_SyncTxReceiptConfig.DiscardUnknown(m)
}
var xxx_messageInfo_SyncTxReceiptConfig proto.InternalMessageInfo
func (x *SyncTxReceiptConfig) GetChain33Host() string {
if x != nil {
return x.Chain33Host
func (m *SyncTxReceiptConfig) GetChain33Host() string {
if m != nil {
return m.Chain33Host
}
return ""
}
func (x *SyncTxReceiptConfig) GetPushHost() string {
if x != nil {
return x.PushHost
func (m *SyncTxReceiptConfig) GetPushHost() string {
if m != nil {
return m.PushHost
}
return ""
}
func (x *SyncTxReceiptConfig) GetPushName() string {
if x != nil {
return x.PushName
func (m *SyncTxReceiptConfig) GetPushName() string {
if m != nil {
return m.PushName
}
return ""
}
func (x *SyncTxReceiptConfig) GetPushBind() string {
if x != nil {
return x.PushBind
func (m *SyncTxReceiptConfig) GetPushBind() string {
if m != nil {
return m.PushBind
}
return ""
}
func (x *SyncTxReceiptConfig) GetStartSyncHeight() int64 {
if x != nil {
return x.StartSyncHeight
func (m *SyncTxReceiptConfig) GetStartSyncHeight() int64 {
if m != nil {
return m.StartSyncHeight
}
return 0
}
func (x *SyncTxReceiptConfig) GetStartSyncSequence() int64 {
if x != nil {
return x.StartSyncSequence
func (m *SyncTxReceiptConfig) GetStartSyncSequence() int64 {
if m != nil {
return m.StartSyncSequence
}
return 0
}
func (x *SyncTxReceiptConfig) GetStartSyncHash() string {
if x != nil {
return x.StartSyncHash
func (m *SyncTxReceiptConfig) GetStartSyncHash() string {
if m != nil {
return m.StartSyncHash
}
return ""
}
func (x *SyncTxReceiptConfig) GetContracts() []string {
if x != nil {
return x.Contracts
func (m *SyncTxReceiptConfig) GetContracts() []string {
if m != nil {
return m.Contracts
}
return nil
}
type Deploy struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
//操作管理员地址
OperatorAddr string `protobuf:"bytes,1,opt,name=operatorAddr,proto3" json:"operatorAddr,omitempty"`
//合约部署人员私钥,用于部署合约时签名使用
......@@ -555,306 +505,123 @@ type Deploy struct {
ValidatorsAddr []string `protobuf:"bytes,3,rep,name=validatorsAddr,proto3" json:"validatorsAddr,omitempty"`
//验证人权重
InitPowers []int64 `protobuf:"varint,4,rep,packed,name=initPowers,proto3" json:"initPowers,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (x *Deploy) Reset() {
*x = Deploy{}
if protoimpl.UnsafeEnabled {
mi := &file_config_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (m *Deploy) Reset() { *m = Deploy{} }
func (m *Deploy) String() string { return proto.CompactTextString(m) }
func (*Deploy) ProtoMessage() {}
func (*Deploy) Descriptor() ([]byte, []int) {
return fileDescriptor_3eaf2c85e69e9ea4, []int{4}
}
func (x *Deploy) String() string {
return protoimpl.X.MessageStringOf(x)
func (m *Deploy) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Deploy.Unmarshal(m, b)
}
func (*Deploy) ProtoMessage() {}
func (x *Deploy) ProtoReflect() protoreflect.Message {
mi := &file_config_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
func (m *Deploy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Deploy.Marshal(b, m, deterministic)
}
// Deprecated: Use Deploy.ProtoReflect.Descriptor instead.
func (*Deploy) Descriptor() ([]byte, []int) {
return file_config_proto_rawDescGZIP(), []int{4}
func (m *Deploy) XXX_Merge(src proto.Message) {
xxx_messageInfo_Deploy.Merge(m, src)
}
func (m *Deploy) XXX_Size() int {
return xxx_messageInfo_Deploy.Size(m)
}
func (m *Deploy) XXX_DiscardUnknown() {
xxx_messageInfo_Deploy.DiscardUnknown(m)
}
var xxx_messageInfo_Deploy proto.InternalMessageInfo
func (x *Deploy) GetOperatorAddr() string {
if x != nil {
return x.OperatorAddr
func (m *Deploy) GetOperatorAddr() string {
if m != nil {
return m.OperatorAddr
}
return ""
}
func (x *Deploy) GetDeployerPrivateKey() string {
if x != nil {
return x.DeployerPrivateKey
func (m *Deploy) GetDeployerPrivateKey() string {
if m != nil {
return m.DeployerPrivateKey
}
return ""
}
func (x *Deploy) GetValidatorsAddr() []string {
if x != nil {
return x.ValidatorsAddr
func (m *Deploy) GetValidatorsAddr() []string {
if m != nil {
return m.ValidatorsAddr
}
return nil
}
func (x *Deploy) GetInitPowers() []int64 {
if x != nil {
return x.InitPowers
func (m *Deploy) GetInitPowers() []int64 {
if m != nil {
return m.InitPowers
}
return nil
}
var File_config_proto protoreflect.FileDescriptor
var file_config_proto_rawDesc = []byte{
0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05,
0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0xc8, 0x03, 0x0a, 0x0c, 0x53, 0x79, 0x6e, 0x63, 0x54, 0x78,
0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x33,
0x33, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x68, 0x61,
0x69, 0x6e, 0x33, 0x33, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x75, 0x73, 0x68,
0x48, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x75, 0x73, 0x68,
0x48, 0x6f, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x75, 0x73, 0x68, 0x4e, 0x61, 0x6d, 0x65,
0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x75, 0x73, 0x68, 0x4e, 0x61, 0x6d, 0x65,
0x12, 0x1a, 0x0a, 0x08, 0x70, 0x75, 0x73, 0x68, 0x42, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01,
0x28, 0x09, 0x52, 0x08, 0x70, 0x75, 0x73, 0x68, 0x42, 0x69, 0x6e, 0x64, 0x12, 0x26, 0x0a, 0x0e,
0x6d, 0x61, 0x74, 0x75, 0x72, 0x69, 0x74, 0x79, 0x44, 0x65, 0x67, 0x72, 0x65, 0x65, 0x18, 0x05,
0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6d, 0x61, 0x74, 0x75, 0x72, 0x69, 0x74, 0x79, 0x44, 0x65,
0x67, 0x72, 0x65, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x62, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72,
0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x62, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72,
0x12, 0x16, 0x0a, 0x06, 0x64, 0x62, 0x50, 0x61, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
0x52, 0x06, 0x64, 0x62, 0x50, 0x61, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x62, 0x43, 0x61,
0x63, 0x68, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x64, 0x62, 0x43, 0x61, 0x63,
0x68, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x66, 0x65, 0x74, 0x63, 0x68, 0x48, 0x65, 0x69, 0x67, 0x68,
0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x4d, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52,
0x13, 0x66, 0x65, 0x74, 0x63, 0x68, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x50, 0x65, 0x72, 0x69,
0x6f, 0x64, 0x4d, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x53, 0x79, 0x6e,
0x63, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x73,
0x74, 0x61, 0x72, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x2c,
0x0a, 0x11, 0x73, 0x74, 0x61, 0x72, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x65, 0x71, 0x75, 0x65,
0x6e, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x73, 0x74, 0x61, 0x72, 0x74,
0x53, 0x79, 0x6e, 0x63, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x24, 0x0a, 0x0d,
0x73, 0x74, 0x61, 0x72, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x48, 0x61, 0x73, 0x68, 0x18, 0x0c, 0x20,
0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x48, 0x61,
0x73, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x73, 0x18,
0x0d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x73,
0x22, 0xc1, 0x02, 0x0a, 0x03, 0x4c, 0x6f, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x67, 0x6c,
0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x6c,
0x65, 0x76, 0x65, 0x6c, 0x12, 0x28, 0x0a, 0x0f, 0x6c, 0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x73, 0x6f,
0x6c, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c,
0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18,
0x0a, 0x07, 0x6c, 0x6f, 0x67, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
0x07, 0x6c, 0x6f, 0x67, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x46,
0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x6d,
0x61, 0x78, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x61,
0x78, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a,
0x6d, 0x61, 0x78, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61,
0x78, 0x41, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6d, 0x61, 0x78, 0x41,
0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x18,
0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65,
0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x18, 0x08, 0x20, 0x01,
0x28, 0x08, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1e, 0x0a, 0x0a,
0x63, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08,
0x52, 0x0a, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x26, 0x0a, 0x0e,
0x63, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a,
0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x46, 0x75, 0x6e, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x22, 0xd2, 0x04, 0x0a, 0x0d, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72,
0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x37, 0x0a, 0x0c,
0x73, 0x79, 0x6e, 0x63, 0x54, 0x78, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x54,
0x78, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 0x73, 0x79, 0x6e, 0x63, 0x54, 0x78, 0x43,
0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1c, 0x0a, 0x03, 0x6c, 0x6f, 0x67, 0x18, 0x03, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4c, 0x6f, 0x67, 0x52, 0x03,
0x6c, 0x6f, 0x67, 0x12, 0x22, 0x0a, 0x0c, 0x6a, 0x72, 0x70, 0x63, 0x42, 0x69, 0x6e, 0x64, 0x41,
0x64, 0x64, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6a, 0x72, 0x70, 0x63, 0x42,
0x69, 0x6e, 0x64, 0x41, 0x64, 0x64, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x65, 0x74, 0x68, 0x50, 0x72,
0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x74,
0x68, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0e, 0x62, 0x72, 0x69,
0x64, 0x67, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0e, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
0x79, 0x12, 0x25, 0x0a, 0x06, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x0d, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79,
0x52, 0x06, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, 0x35, 0x0a, 0x0e, 0x64, 0x65, 0x70, 0x6c,
0x6f, 0x79, 0x34, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x33, 0x33, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x0d, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x52,
0x0e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x34, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x33, 0x33, 0x12,
0x2c, 0x0a, 0x11, 0x65, 0x74, 0x68, 0x4d, 0x61, 0x74, 0x75, 0x72, 0x69, 0x74, 0x79, 0x44, 0x65,
0x67, 0x72, 0x65, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x65, 0x74, 0x68, 0x4d,
0x61, 0x74, 0x75, 0x72, 0x69, 0x74, 0x79, 0x44, 0x65, 0x67, 0x72, 0x65, 0x65, 0x12, 0x30, 0x0a,
0x13, 0x65, 0x74, 0x68, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x46, 0x65, 0x74, 0x63, 0x68, 0x50, 0x65,
0x72, 0x69, 0x6f, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x65, 0x74, 0x68, 0x42,
0x6c, 0x6f, 0x63, 0x6b, 0x46, 0x65, 0x74, 0x63, 0x68, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12,
0x26, 0x0a, 0x0e, 0x65, 0x74, 0x68, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6c,
0x69, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x74, 0x68, 0x50, 0x72, 0x6f, 0x76,
0x69, 0x64, 0x65, 0x72, 0x43, 0x6c, 0x69, 0x12, 0x38, 0x0a, 0x17, 0x62, 0x72, 0x69, 0x64, 0x67,
0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x69, 0x6e,
0x33, 0x33, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65,
0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x33,
0x33, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0d,
0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12,
0x28, 0x0a, 0x0f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x44, 0x34, 0x43, 0x68, 0x61, 0x69, 0x6e,
0x33, 0x33, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49,
0x44, 0x34, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x33, 0x33, 0x22, 0xa7, 0x02, 0x0a, 0x13, 0x53, 0x79,
0x6e, 0x63, 0x54, 0x78, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69,
0x67, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x33, 0x33, 0x68, 0x6f, 0x73, 0x74,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x33, 0x33, 0x68,
0x6f, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x75, 0x73, 0x68, 0x48, 0x6f, 0x73, 0x74, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x75, 0x73, 0x68, 0x48, 0x6f, 0x73, 0x74, 0x12,
0x1a, 0x0a, 0x08, 0x70, 0x75, 0x73, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
0x09, 0x52, 0x08, 0x70, 0x75, 0x73, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70,
0x75, 0x73, 0x68, 0x42, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70,
0x75, 0x73, 0x68, 0x42, 0x69, 0x6e, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74,
0x53, 0x79, 0x6e, 0x63, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03,
0x52, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x48, 0x65, 0x69, 0x67, 0x68,
0x74, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x72, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x65,
0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x73, 0x74,
0x61, 0x72, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12,
0x24, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x48, 0x61, 0x73, 0x68,
0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x53, 0x79, 0x6e,
0x63, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63,
0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61,
0x63, 0x74, 0x73, 0x22, 0xa4, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, 0x22,
0x0a, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64,
0x64, 0x72, 0x12, 0x2e, 0x0a, 0x12, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x72, 0x50, 0x72,
0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12,
0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x72, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b,
0x65, 0x79, 0x12, 0x26, 0x0a, 0x0e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73,
0x41, 0x64, 0x64, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x76, 0x61, 0x6c, 0x69,
0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x41, 0x64, 0x64, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e,
0x69, 0x74, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0a,
0x69, 0x6e, 0x69, 0x74, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x73, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x2e,
0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_config_proto_rawDescOnce sync.Once
file_config_proto_rawDescData = file_config_proto_rawDesc
)
func file_config_proto_rawDescGZIP() []byte {
file_config_proto_rawDescOnce.Do(func() {
file_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_config_proto_rawDescData)
})
return file_config_proto_rawDescData
}
var file_config_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
var file_config_proto_goTypes = []interface{}{
(*SyncTxConfig)(nil), // 0: types.SyncTxConfig
(*Log)(nil), // 1: types.Log
(*RelayerConfig)(nil), // 2: types.RelayerConfig
(*SyncTxReceiptConfig)(nil), // 3: types.SyncTxReceiptConfig
(*Deploy)(nil), // 4: types.Deploy
}
var file_config_proto_depIdxs = []int32{
0, // 0: types.RelayerConfig.syncTxConfig:type_name -> types.SyncTxConfig
1, // 1: types.RelayerConfig.log:type_name -> types.Log
4, // 2: types.RelayerConfig.deploy:type_name -> types.Deploy
4, // 3: types.RelayerConfig.deploy4chain33:type_name -> types.Deploy
4, // [4:4] is the sub-list for method output_type
4, // [4:4] is the sub-list for method input_type
4, // [4:4] is the sub-list for extension type_name
4, // [4:4] is the sub-list for extension extendee
0, // [0:4] is the sub-list for field type_name
}
func init() { file_config_proto_init() }
func file_config_proto_init() {
if File_config_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SyncTxConfig); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Log); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RelayerConfig); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SyncTxReceiptConfig); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_config_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Deploy); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_config_proto_rawDesc,
NumEnums: 0,
NumMessages: 5,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_config_proto_goTypes,
DependencyIndexes: file_config_proto_depIdxs,
MessageInfos: file_config_proto_msgTypes,
}.Build()
File_config_proto = out.File
file_config_proto_rawDesc = nil
file_config_proto_goTypes = nil
file_config_proto_depIdxs = nil
func init() {
proto.RegisterType((*SyncTxConfig)(nil), "types.SyncTxConfig")
proto.RegisterType((*Log)(nil), "types.Log")
proto.RegisterType((*RelayerConfig)(nil), "types.RelayerConfig")
proto.RegisterType((*SyncTxReceiptConfig)(nil), "types.SyncTxReceiptConfig")
proto.RegisterType((*Deploy)(nil), "types.Deploy")
}
func init() { proto.RegisterFile("config.proto", fileDescriptor_3eaf2c85e69e9ea4) }
var fileDescriptor_3eaf2c85e69e9ea4 = []byte{
// 772 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x55, 0xc1, 0x6e, 0xdb, 0x46,
0x10, 0x85, 0x4c, 0x4b, 0x96, 0x56, 0x92, 0x8b, 0xae, 0x8b, 0x96, 0x28, 0x8c, 0x42, 0x10, 0xda,
0x42, 0x87, 0x42, 0x2d, 0x6c, 0x17, 0xc9, 0xd5, 0x92, 0x61, 0x38, 0x88, 0x9d, 0x08, 0x6b, 0x9f,
0x72, 0x5b, 0x2d, 0xc7, 0xe4, 0xc6, 0x2b, 0x2e, 0xb3, 0x5c, 0x29, 0x52, 0xbe, 0x27, 0x40, 0x80,
0xfc, 0x45, 0x7e, 0x21, 0x5f, 0x14, 0xec, 0x90, 0x94, 0x28, 0x5a, 0x01, 0x92, 0x53, 0x6e, 0x9c,
0xf7, 0x06, 0xa3, 0x9d, 0x37, 0xf3, 0x46, 0xa4, 0x23, 0x74, 0x7c, 0x2f, 0xc3, 0x61, 0x62, 0xb4,
0xd5, 0xb4, 0x6e, 0x57, 0x09, 0xa4, 0xfd, 0x8f, 0x1e, 0xe9, 0xdc, 0xae, 0x62, 0x71, 0xb7, 0x1c,
0x23, 0x4b, 0x7b, 0xa4, 0x2d, 0x22, 0x2e, 0xe3, 0xd3, 0xd3, 0x48, 0xa7, 0xd6, 0xaf, 0xf5, 0x6a,
0x83, 0x16, 0x2b, 0x43, 0xf4, 0x77, 0xd2, 0x4c, 0xe6, 0x69, 0x74, 0xe5, 0xe8, 0x3d, 0xa4, 0xd7,
0x71, 0xc1, 0xbd, 0xe0, 0x33, 0xf0, 0xbd, 0x0d, 0xe7, 0xe2, 0x82, 0x1b, 0xc9, 0x38, 0xf0, 0xf7,
0x37, 0x9c, 0x8b, 0xe9, 0xdf, 0xe4, 0x70, 0xc6, 0xed, 0xdc, 0x48, 0xbb, 0xba, 0x80, 0xd0, 0x00,
0xf8, 0xf5, 0x5e, 0x6d, 0x50, 0x67, 0x15, 0xd4, 0xd5, 0x08, 0xa6, 0x81, 0x91, 0x0b, 0x30, 0x7e,
0x23, 0xab, 0x51, 0xc4, 0xf4, 0x57, 0xd2, 0x08, 0xa6, 0x13, 0x6e, 0x23, 0xff, 0x00, 0x99, 0x3c,
0xa2, 0x3e, 0x39, 0x08, 0xa6, 0x63, 0x2e, 0x22, 0xf0, 0x9b, 0x58, 0xb4, 0x08, 0xe9, 0x7f, 0xe4,
0xe8, 0x1e, 0xac, 0x88, 0xae, 0x40, 0x86, 0x91, 0x9d, 0x80, 0x91, 0x3a, 0xb8, 0x49, 0xfd, 0x56,
0xaf, 0x36, 0xf0, 0xd8, 0x2e, 0x8a, 0x0e, 0xc8, 0x4f, 0xa9, 0xe5, 0xc6, 0x3a, 0xc9, 0x32, 0xca,
0x27, 0x98, 0x5d, 0x85, 0xe9, 0x3f, 0xe4, 0xe7, 0x35, 0x74, 0x0b, 0x6f, 0xe6, 0x10, 0x0b, 0xf0,
0xdb, 0x98, 0xfb, 0x98, 0xa0, 0x7f, 0x92, 0xee, 0xa6, 0x00, 0x4f, 0x23, 0xbf, 0x83, 0x2d, 0x6c,
0x83, 0xfd, 0x4f, 0x7b, 0xc4, 0xbb, 0xd6, 0xa1, 0x53, 0x41, 0xe9, 0x50, 0xc1, 0x02, 0x54, 0x3e,
0xa0, 0x75, 0xec, 0x5e, 0xa8, 0x74, 0x38, 0xd6, 0x71, 0xaa, 0x15, 0x5c, 0x63, 0x4a, 0x36, 0xa4,
0x2a, 0xec, 0x74, 0x51, 0x3a, 0xbc, 0x94, 0xaa, 0x18, 0x55, 0x11, 0xba, 0x1d, 0x98, 0xf1, 0xa5,
0xfb, 0xbc, 0x95, 0xef, 0x00, 0x87, 0xd5, 0x65, 0x65, 0x88, 0xfe, 0x41, 0xc8, 0x8c, 0x2f, 0x47,
0x5c, 0x3c, 0xcc, 0x93, 0x14, 0x67, 0xd5, 0x65, 0x25, 0xc4, 0xcd, 0x62, 0xc6, 0x97, 0xe7, 0x21,
0xe0, 0x94, 0xba, 0x2c, 0x8f, 0xe8, 0x31, 0x69, 0x29, 0x2d, 0xb8, 0xba, 0x93, 0x33, 0xc0, 0x31,
0x35, 0xd9, 0x06, 0x70, 0x7d, 0x09, 0x3d, 0x4b, 0x0c, 0xa4, 0x29, 0x8e, 0xaa, 0xc9, 0xd6, 0xb1,
0xfb, 0x45, 0xc1, 0x95, 0x02, 0x83, 0x0f, 0x6e, 0x21, 0x5b, 0x42, 0xdc, 0x06, 0xe5, 0xd1, 0x3c,
0x16, 0x56, 0xea, 0x18, 0x07, 0xd3, 0x64, 0x15, 0xb4, 0xff, 0x79, 0x9f, 0x74, 0x19, 0x28, 0xbe,
0x02, 0x93, 0x6f, 0xfc, 0x2f, 0xa4, 0x6e, 0xa5, 0x55, 0x90, 0x4b, 0x99, 0x05, 0xf4, 0x09, 0xe9,
0xa4, 0x25, 0x5f, 0xa0, 0x88, 0xed, 0x93, 0xa3, 0x21, 0xda, 0x66, 0x58, 0xb6, 0x0c, 0xdb, 0x4a,
0xa4, 0xc7, 0xc4, 0x53, 0x3a, 0x44, 0x49, 0xdb, 0x27, 0x24, 0xcf, 0xbf, 0xd6, 0x21, 0x73, 0x30,
0xed, 0x93, 0xce, 0x6b, 0x93, 0x08, 0xb7, 0xf4, 0xe7, 0x41, 0x60, 0x72, 0x23, 0x6c, 0x61, 0x4e,
0x7e, 0xb0, 0xd1, 0xc4, 0xe8, 0x85, 0x0c, 0xc0, 0xa0, 0xba, 0x2d, 0x56, 0x86, 0x5c, 0xb3, 0x53,
0x23, 0x83, 0x10, 0x18, 0x84, 0x32, 0xb5, 0x66, 0x95, 0x9b, 0xa1, 0x82, 0xd2, 0xbf, 0x48, 0x23,
0x80, 0x44, 0xe9, 0x15, 0x6a, 0xdd, 0x3e, 0xe9, 0xe6, 0xcf, 0xb9, 0x40, 0x90, 0xe5, 0x24, 0xfd,
0x9f, 0x1c, 0x66, 0x5f, 0x67, 0xb9, 0xcf, 0x51, 0xfd, 0x47, 0xe9, 0x95, 0x24, 0xb7, 0xe2, 0x60,
0xa3, 0x9b, 0x6d, 0xdf, 0xb6, 0xd0, 0x62, 0x8f, 0x09, 0x67, 0x36, 0xb0, 0xd1, 0x48, 0x69, 0xf1,
0x70, 0xe9, 0x9c, 0x95, 0x79, 0x0a, 0xa7, 0x54, 0x67, 0xbb, 0x28, 0xd7, 0x65, 0xa9, 0xe9, 0xb1,
0x92, 0xe8, 0x9f, 0x16, 0xab, 0xa0, 0xf4, 0x29, 0xf9, 0x6d, 0xbb, 0xef, 0x97, 0xf1, 0x38, 0xef,
0x23, 0xb3, 0xd1, 0xd7, 0x68, 0xb7, 0x8e, 0xd8, 0x0c, 0xde, 0xab, 0x2e, 0xe6, 0x6e, 0x00, 0x67,
0x25, 0x0c, 0x9e, 0x5d, 0x9c, 0x15, 0xf5, 0x0e, 0xf1, 0xb5, 0x55, 0xb8, 0xff, 0x61, 0x8f, 0x1c,
0x65, 0x2b, 0xc1, 0x40, 0x80, 0x4c, 0xec, 0x0f, 0x3d, 0xa6, 0x3b, 0x8e, 0x54, 0xfd, 0x3b, 0x8e,
0x54, 0xe3, 0x9b, 0x8f, 0xd4, 0xc1, 0x8e, 0x23, 0x85, 0x9a, 0xea, 0xd8, 0x1a, 0x2e, 0xac, 0x73,
0xb1, 0x87, 0x9a, 0x16, 0x40, 0xff, 0x7d, 0x8d, 0x34, 0xb2, 0x75, 0x72, 0x56, 0xd0, 0x09, 0x18,
0x6e, 0xb5, 0x41, 0x2b, 0x64, 0xea, 0x6c, 0x61, 0x74, 0x48, 0x68, 0xb6, 0x74, 0x60, 0x26, 0x46,
0x2e, 0xb8, 0x85, 0xe7, 0xb0, 0xca, 0x85, 0xda, 0xc1, 0xb8, 0x95, 0x59, 0x70, 0x25, 0x03, 0x57,
0x20, 0xc5, 0xaa, 0x1e, 0xbe, 0xa0, 0x82, 0xba, 0x6b, 0x22, 0x63, 0x69, 0x27, 0xfa, 0x2d, 0x98,
0xd4, 0xdf, 0xef, 0x79, 0x03, 0x8f, 0x95, 0x90, 0x11, 0x79, 0xd5, 0x1c, 0x0e, 0xff, 0xc5, 0xed,
0x9f, 0x36, 0xf0, 0x0f, 0xf3, 0xf4, 0x4b, 0x00, 0x00, 0x00, 0xff, 0xff, 0x54, 0x92, 0x59, 0xbb,
0x40, 0x07, 0x00, 0x00,
}
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment