Commit 82ca30f8 authored by QM's avatar QM

delete ImportEthValidatorPrivateKey MakeNewProphecyClaim

parent 1b8b3721
......@@ -14,14 +14,11 @@ CLIC="./ebcli_C"
CLID="./ebcli_D"
chain33SenderAddr="14KEKbYtKKQm4wMthSK9J4La4nAiidGozt"
#chain33SenderAddrKey="CC38546E9E659D15E6B4893F0AB32A06D103931A8230B0BDE71459D2B27D6944"
# validatorsAddr=["0x92c8b16afd6d423652559c6e266cbe1c29bfd84f", "0x0df9a824699bc5878232c9e612fe1a5346a5a368", "0xcb074cb21cdddf3ce9c3c0a7ac4497d633c9d9f1", "0xd9dab021e74ecf475788ed7b61356056b2095830"]
ethValidatorAddrKeyA="3fa21584ae2e4fd74db9b58e2386f5481607dfa4d7ba0617aaa7858e5025dc1e"
ethValidatorAddrKeyB="a5f3063552f4483cfc20ac4f40f45b798791379862219de9e915c64722c1d400"
ethValidatorAddrKeyC="bbf5e65539e9af0eb0cfac30bad475111054b09c11d668fc0731d54ea777471e"
ethValidatorAddrKeyD="c9fa31d7984edf81b8ef3b40c761f1847f6fcd5711ab2462da97dc458f1f896b"
# 新增地址 chain33 需要导入地址 转入 10 bty当收费费
chain33Validator1="1GTxrmuWiXavhcvsaH5w9whgVxUrWsUMdV"
chain33Validator2="155ooMPBTF8QQsGAknkK7ei5D78rwDEFe6"
......@@ -31,11 +28,11 @@ chain33ValidatorKey1="0xd627968e445f2a41c92173225791bae1ba42126ae96c32f28f97ff8f
chain33ValidatorKey2="0x9d539bc5fd084eb7fe86ad631dba9aa086dba38418725c38d9751459f567da66"
chain33ValidatorKey3="0x0a6671f101e30a2cc2d79d77436b62cdf2664ed33eb631a9c9e3f3dd348a23be"
chain33ValidatorKey4="0x3818b257b05ee75b6e43ee0e3cfc2d8502342cf67caed533e3756966690b62a5"
ethReceiverAddr1="0xa4ea64a583f6e51c3799335b28a8f0529570a635"
ethReceiverAddrKey1="355b876d7cbcb930d5dfab767f66336ce327e082cbaa1877210c1bae89b1df71"
ethReceiverAddr2="0x0c05ba5c230fdaa503b53702af1962e08d0c60bf"
ethReceiverAddrKey2="9dc6df3a8ab139a54d8a984f54958ae0661f880229bf3bdbb886b87d58b56a08"
maturityDegree=10
tokenAddrBty=""
......@@ -183,15 +180,6 @@ function EthImportKey() {
result=$(${CLID} relayer ethereum import_chain33privatekey -k "${chain33ValidatorKey4}")
cli_ret "${result}" "import_chain33privatekey"
result=$(${CLIA} relayer ethereum import_ethprivatekey -k "${ethValidatorAddrKeyA}")
cli_ret "${result}" "import_ethprivatekey"
result=$(${CLIB} relayer ethereum import_ethprivatekey -k "${ethValidatorAddrKeyB}")
cli_ret "${result}" "import_ethprivatekeyB"
result=$(${CLIC} relayer ethereum import_ethprivatekey -k "${ethValidatorAddrKeyC}")
cli_ret "${result}" "import_ethprivatekeyC"
result=$(${CLID} relayer ethereum import_ethprivatekey -k "${ethValidatorAddrKeyD}")
cli_ret "${result}" "import_ethprivatekeyD"
result=$(${CLIA} relayer chain33 import_privatekey -k "${ethValidatorAddrKeyA}")
cli_ret "${result}" "A relayer chain33 import_privatekey"
result=$(${CLIB} relayer chain33 import_privatekey -k "${ethValidatorAddrKeyB}")
......
......@@ -11,21 +11,16 @@ CLIB="./ebcli_B"
CLIC="./ebcli_C"
CLID="./ebcli_D"
#docker_chain33_ip=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' build_chain33_1)
#Chain33Cli="$GOPATH/src/github.com/33cn/plugin/build/chain33-cli --rpc_laddr http://${docker_chain33_ip}:8801"
docker_chain33_ip=""
Chain33Cli=""
Chain33Cli="docker exec ${NODE3} /root/chain33-cli"
chain33SenderAddr="14KEKbYtKKQm4wMthSK9J4La4nAiidGozt"
#chain33SenderAddrKey="CC38546E9E659D15E6B4893F0AB32A06D103931A8230B0BDE71459D2B27D6944"
# validatorsAddr=["0x92c8b16afd6d423652559c6e266cbe1c29bfd84f", "0x0df9a824699bc5878232c9e612fe1a5346a5a368", "0xcb074cb21cdddf3ce9c3c0a7ac4497d633c9d9f1", "0xd9dab021e74ecf475788ed7b61356056b2095830"]
ethValidatorAddrKeyA="3fa21584ae2e4fd74db9b58e2386f5481607dfa4d7ba0617aaa7858e5025dc1e"
ethValidatorAddrKeyB="a5f3063552f4483cfc20ac4f40f45b798791379862219de9e915c64722c1d400"
ethValidatorAddrKeyC="bbf5e65539e9af0eb0cfac30bad475111054b09c11d668fc0731d54ea777471e"
ethValidatorAddrKeyD="c9fa31d7984edf81b8ef3b40c761f1847f6fcd5711ab2462da97dc458f1f896b"
# 新增地址 chain33 需要导入地址 转入 10 bty当收费费
chain33Validator1="1GTxrmuWiXavhcvsaH5w9whgVxUrWsUMdV"
chain33Validator2="155ooMPBTF8QQsGAknkK7ei5D78rwDEFe6"
......@@ -35,11 +30,11 @@ chain33ValidatorKey1="0xd627968e445f2a41c92173225791bae1ba42126ae96c32f28f97ff8f
chain33ValidatorKey2="0x9d539bc5fd084eb7fe86ad631dba9aa086dba38418725c38d9751459f567da66"
chain33ValidatorKey3="0x0a6671f101e30a2cc2d79d77436b62cdf2664ed33eb631a9c9e3f3dd348a23be"
chain33ValidatorKey4="0x3818b257b05ee75b6e43ee0e3cfc2d8502342cf67caed533e3756966690b62a5"
ethReceiverAddr1="0xa4ea64a583f6e51c3799335b28a8f0529570a635"
ethReceiverAddrKey1="355b876d7cbcb930d5dfab767f66336ce327e082cbaa1877210c1bae89b1df71"
ethReceiverAddr2="0x0c05ba5c230fdaa503b53702af1962e08d0c60bf"
ethReceiverAddrKey2="9dc6df3a8ab139a54d8a984f54958ae0661f880229bf3bdbb886b87d58b56a08"
maturityDegree=10
tokenAddrBty=""
tokenAddr=""
......@@ -103,15 +98,6 @@ function EthImportKey() {
result=$(${CLID} relayer ethereum import_chain33privatekey -k "${chain33ValidatorKey4}")
cli_ret "${result}" "import_chain33privatekey"
result=$(${CLIA} relayer ethereum import_ethprivatekey -k "${ethValidatorAddrKeyA}")
cli_ret "${result}" "import_ethprivatekey"
result=$(${CLIB} relayer ethereum import_ethprivatekey -k "${ethValidatorAddrKeyB}")
cli_ret "${result}" "import_ethprivatekeyB"
result=$(${CLIC} relayer ethereum import_ethprivatekey -k "${ethValidatorAddrKeyC}")
cli_ret "${result}" "import_ethprivatekeyC"
result=$(${CLID} relayer ethereum import_ethprivatekey -k "${ethValidatorAddrKeyD}")
cli_ret "${result}" "import_ethprivatekeyD"
result=$(${CLIA} relayer chain33 import_privatekey -k "${ethValidatorAddrKeyA}")
cli_ret "${result}" "A relayer chain33 import_privatekey"
result=$(${CLIB} relayer chain33 import_privatekey -k "${ethValidatorAddrKeyB}")
......
......@@ -12,8 +12,6 @@ Chain33_CLI=""
Ethsender="0xa4ea64a583f6e51c3799335b28a8f0529570a635"
#ethSender0PrivateKey="3fa21584ae2e4fd74db9b58e2386f5481607dfa4d7ba0617aaa7858e5025dc1e"
privateKeys[0]="8656d2bc732a8a816a461ba5e2d8aac7c7f85c26a813df30d5327210465eb230"
privateKeys[1]="3fa21584ae2e4fd74db9b58e2386f5481607dfa4d7ba0617aaa7858e5025dc1e"
privateKeys[2]="1385016736f7379884763f4a39811d1391fa156a7ca017be6afffa52bb327695"
......
......@@ -23,7 +23,6 @@ func EthereumRelayerCmd() *cobra.Command {
cmd.AddCommand(
ImportChain33PrivateKeyCmd(),
ImportEthValidatorPrivateKeyCmd(),
GenEthPrivateKeyCmd(),
ShowValidatorsAddrCmd(),
ShowChain33TxsHashCmd(),
......@@ -35,7 +34,6 @@ func EthereumRelayerCmd() *cobra.Command {
//////auxiliary///////
CreateBridgeTokenCmd(),
CreateEthereumTokenCmd(),
MakeNewProphecyClaimCmd(),
GetBalanceCmd(),
IsProphecyPendingCmd(),
MintErc20Cmd(),
......@@ -79,26 +77,6 @@ func importChain33Privatekey(cmd *cobra.Command, args []string) {
ctx.Run()
}
func ImportEthValidatorPrivateKeyCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "import_ethprivatekey",
Short: "import ethereum's validator private key ",
Run: importEthValidtorPrivatekey,
}
addImportPrivateKeyFlags(cmd)
return cmd
}
func importEthValidtorPrivatekey(cmd *cobra.Command, args []string) {
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
privateKey, _ := cmd.Flags().GetString("key")
params := privateKey
var res rpctypes.Reply
ctx := jsonclient.NewRPCCtx(rpcLaddr, "Manager.ImportEthValidatorPrivateKey", params, &res)
ctx.Run()
}
func GenEthPrivateKeyCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "create_eth_key",
......@@ -589,70 +567,6 @@ func ShowBridgeRegistryAddr(cmd *cobra.Command, args []string) {
ctx.Run()
}
func MakeNewProphecyClaimCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "prophecy",
Short: "Make New Prophecy Claim",
Run: MakeNewProphecyClaim,
}
MakeNewProphecyClaimFlags(cmd)
return cmd
}
func MakeNewProphecyClaimFlags(cmd *cobra.Command) {
cmd.Flags().Uint32P("claim", "c", uint32(1), "claim type, 1 denote burn, and 2 denotes lock")
_ = cmd.MarkFlagRequired("claim")
cmd.Flags().StringP("chain33Sender", "a", "", "Chain33Sender")
_ = cmd.MarkFlagRequired("chain33Sender")
cmd.Flags().StringP("token", "t", "", "token address,optional, nil for ETH")
cmd.Flags().StringP("symbol", "s", "", "token symbol")
_ = cmd.MarkFlagRequired("symbol")
cmd.Flags().StringP("ethReceiver", "r", "", "eth Receiver")
_ = cmd.MarkFlagRequired("ethReceiver")
cmd.Flags().Float64P("amount", "m", 0, "amount")
_ = cmd.MarkFlagRequired("amount")
cmd.Flags().StringP("hash", "i", "", "chain33 tx hash")
_ = cmd.MarkFlagRequired("hash")
}
func MakeNewProphecyClaim(cmd *cobra.Command, args []string) {
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
claimType, _ := cmd.Flags().GetUint32("claim")
if claimType != uint32(1) && claimType != uint32(2) {
fmt.Println("Wrong claim type")
return
}
chain33Sender, _ := cmd.Flags().GetString("chain33Sender")
tokenAddr, _ := cmd.Flags().GetString("token")
symbol, _ := cmd.Flags().GetString("symbol")
ethReceiver, _ := cmd.Flags().GetString("ethReceiver")
amount, _ := cmd.Flags().GetFloat64("amount")
txhash, _ := cmd.Flags().GetString("hash")
nodeAddr, _ := cmd.Flags().GetString("node_addr")
d, err := utils.GetDecimalsFromNode(tokenAddr, nodeAddr)
if err != nil {
fmt.Println("get decimals error")
return
}
realAmount := types.ToWei(amount, d)
para := ebTypes.NewProphecyClaim{
ClaimType: claimType,
Chain33Sender: chain33Sender,
TokenAddr: tokenAddr,
Symbol: symbol,
EthReceiver: ethReceiver,
Amount: realAmount.String(),
TxHash: txhash,
}
var res rpctypes.Reply
ctx := jsonclient.NewRPCCtx(rpcLaddr, "Manager.MakeNewProphecyClaim", para, &res)
ctx.Run()
}
func GetBalanceCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "balance",
......
......@@ -2,7 +2,6 @@ package ethtxs
import (
"context"
"crypto/ecdsa"
"errors"
"math/big"
......@@ -442,42 +441,3 @@ func LockEthErc20AssetAsync(ownerPrivateKeyStr, tokenAddrStr, chain33Receiver st
}
return tx.Hash().String(), nil
}
/////////////////NewProphecyClaim////////////////
func MakeNewProphecyClaim(newProphecyClaimPara *NewProphecyClaimPara, backend bind.ContractBackend, privateKey *ecdsa.PrivateKey, transactor common.Address, x2EthContracts *X2EthContracts) (string, error) {
var prepareDone bool
authVali, err := PrepareAuth(backend, privateKey, transactor)
if nil != err {
return "", err
}
prepareDone = true
defer func() {
if err != nil && prepareDone {
_, _ = revokeNonce(transactor)
}
}()
amount := newProphecyClaimPara.Amount
ethReceiver := newProphecyClaimPara.EthReceiver
// Generate rawHash using ProphecyClaim data
claimID := crypto.Keccak256Hash(newProphecyClaimPara.Txhash, newProphecyClaimPara.Chain33Sender, newProphecyClaimPara.EthReceiver.Bytes(), newProphecyClaimPara.TokenAddr.Bytes(), amount.Bytes())
// Sign the hash using the active validator's private key
signature, err := SignClaim4Eth(claimID, privateKey)
if nil != err {
return "", err
}
tx, err := x2EthContracts.Oracle.NewOracleClaim(authVali, newProphecyClaimPara.ClaimType, newProphecyClaimPara.Chain33Sender, ethReceiver, newProphecyClaimPara.TokenAddr, newProphecyClaimPara.Symbol, amount, claimID, signature)
if nil != err {
return "", err
}
err = waitEthTxFinished(backend.(*ethclient.Client), tx.Hash(), "MakeNewProphecyClaim")
if nil != err {
return "", err
}
return tx.Hash().String(), nil
}
......@@ -8,7 +8,6 @@ import (
"sync"
"time"
ebrelayerTypes "github.com/33cn/plugin/plugin/dapp/x2Ethereum/ebrelayer/types"
"github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
......@@ -65,19 +64,6 @@ func prefixMessage(message common.Hash, key *ecdsa.PrivateKey) ([]byte, []byte)
return sig, prefixed
}
// LoadSender : uses the validator's private key to load the validator's address
func LoadSender(privateKey *ecdsa.PrivateKey) (address common.Address, err error) {
// Parse public key
publicKey := privateKey.Public()
publicKeyECDSA, ok := publicKey.(*ecdsa.PublicKey)
if !ok {
return common.Address{}, ebrelayerTypes.ErrPublicKeyType
}
fromAddress := crypto.PubkeyToAddress(*publicKeyECDSA)
return fromAddress, nil
}
func getNonce(sender common.Address, backend bind.ContractBackend) (*big.Int, error) {
if nonceMutex, exist := addr2Nonce[sender]; exist {
nonceMutex.rw.Lock()
......
......@@ -23,7 +23,6 @@ import (
)
var (
ethAccountKey = []byte("EthAccount4EthRelayer")
chain33AccountKey = []byte("Chain33Account4EthRelayer")
start = int(1)
)
......@@ -38,42 +37,31 @@ type Key struct {
}
func (ethRelayer *Relayer4Ethereum) NewAccount(passphrase string) (privateKeystr, addr string, err error) {
var privateKey *ecdsa.PrivateKey
privateKey, privateKeystr, addr, err = newKeyAndStore(ethRelayer.db, crand.Reader, passphrase)
_, privateKeystr, addr, err = newKeyAndStore(ethRelayer.db, crand.Reader, passphrase)
if err != nil {
return "", "", err
}
ethRelayer.SetPrivateKey4Ethereum(privateKey)
return
}
func (ethRelayer *Relayer4Ethereum) GetAccount(passphrase string) (privateKey, addr string, err error) {
accountInfo, err := ethRelayer.db.Get(ethAccountKey)
accountInfo, err := ethRelayer.db.Get(chain33AccountKey)
if nil != err {
return "", "", err
}
ethAccount := &x2ethTypes.Account4Relayer{}
if err := chain33Types.Decode(accountInfo, ethAccount); nil != err {
Chain33Account := &x2ethTypes.Account4Relayer{}
if err := chain33Types.Decode(accountInfo, Chain33Account); nil != err {
return "", "", err
}
decryptered := wcom.CBCDecrypterPrivkey([]byte(passphrase), ethAccount.Privkey)
decryptered := wcom.CBCDecrypterPrivkey([]byte(passphrase), Chain33Account.Privkey)
privateKey = chain33Common.ToHex(decryptered)
addr = ethAccount.Addr
addr = Chain33Account.Addr
return
}
func (ethRelayer *Relayer4Ethereum) GetValidatorAddr() (validators x2ethTypes.ValidatorAddr4EthRelayer, err error) {
var ethAccountAddr string
var chain33AccountAddr string
accountInfo, err := ethRelayer.db.Get(ethAccountKey)
if nil == err {
ethAccount := &x2ethTypes.Account4Relayer{}
if err := chain33Types.Decode(accountInfo, ethAccount); nil == err {
ethAccountAddr = ethAccount.Addr
}
}
accountInfo, err = ethRelayer.db.Get(chain33AccountKey)
accountInfo, err := ethRelayer.db.Get(chain33AccountKey)
if nil == err {
ethAccount := &x2ethTypes.Account4Relayer{}
if err := chain33Types.Decode(accountInfo, ethAccount); nil == err {
......@@ -81,40 +69,22 @@ func (ethRelayer *Relayer4Ethereum) GetValidatorAddr() (validators x2ethTypes.Va
}
}
if 0 == len(chain33AccountAddr) && 0 == len(ethAccountAddr) {
if 0 == len(chain33AccountAddr) {
return x2ethTypes.ValidatorAddr4EthRelayer{}, x2ethTypes.ErrNoValidatorConfigured
}
validators = x2ethTypes.ValidatorAddr4EthRelayer{
EthValidator: ethAccountAddr,
Chain33Validator: chain33AccountAddr,
}
return
}
func (ethRelayer *Relayer4Ethereum) RestorePrivateKeys(passPhase string) (err error) {
accountInfo, err := ethRelayer.db.Get(ethAccountKey)
if nil == err {
ethAccount := &x2ethTypes.Account4Relayer{}
if err := chain33Types.Decode(accountInfo, ethAccount); nil == err {
decryptered := wcom.CBCDecrypterPrivkey([]byte(passPhase), ethAccount.Privkey)
privateKey, err := crypto.ToECDSA(decryptered)
if nil != err {
errInfo := fmt.Sprintf("Failed to ToECDSA due to:%s", err.Error())
relayerLog.Info("RestorePrivateKeys", "Failed to ToECDSA:", err.Error())
return errors.New(errInfo)
}
ethRelayer.rwLock.Lock()
ethRelayer.privateKey4Ethereum = privateKey
ethRelayer.rwLock.Unlock()
}
}
accountInfo, err = ethRelayer.db.Get(chain33AccountKey)
accountInfo, err := ethRelayer.db.Get(chain33AccountKey)
if nil == err {
ethAccount := &x2ethTypes.Account4Relayer{}
if err := chain33Types.Decode(accountInfo, ethAccount); nil == err {
decryptered := wcom.CBCDecrypterPrivkey([]byte(passPhase), ethAccount.Privkey)
Chain33Account := &x2ethTypes.Account4Relayer{}
if err := chain33Types.Decode(accountInfo, Chain33Account); nil == err {
decryptered := wcom.CBCDecrypterPrivkey([]byte(passPhase), Chain33Account.Privkey)
var driver secp256k1.Driver
priKey, err := driver.PrivKeyFromBytes(decryptered)
if nil != err {
......@@ -128,7 +98,7 @@ func (ethRelayer *Relayer4Ethereum) RestorePrivateKeys(passPhase string) (err er
}
}
if ethRelayer.privateKey4Ethereum != nil && nil != ethRelayer.privateKey4Chain33 {
if nil != ethRelayer.privateKey4Chain33 {
ethRelayer.unlockchan <- start
}
......@@ -136,20 +106,20 @@ func (ethRelayer *Relayer4Ethereum) RestorePrivateKeys(passPhase string) (err er
}
func (ethRelayer *Relayer4Ethereum) StoreAccountWithNewPassphase(newPassphrase, oldPassphrase string) error {
accountInfo, err := ethRelayer.db.Get(ethAccountKey)
accountInfo, err := ethRelayer.db.Get(chain33AccountKey)
if nil != err {
relayerLog.Info("StoreAccountWithNewPassphase", "pls check account is created already, err", err)
return err
}
ethAccount := &x2ethTypes.Account4Relayer{}
if err := chain33Types.Decode(accountInfo, ethAccount); nil != err {
Chain33Account := &x2ethTypes.Account4Relayer{}
if err := chain33Types.Decode(accountInfo, Chain33Account); nil != err {
return err
}
decryptered := wcom.CBCDecrypterPrivkey([]byte(oldPassphrase), ethAccount.Privkey)
decryptered := wcom.CBCDecrypterPrivkey([]byte(oldPassphrase), Chain33Account.Privkey)
encryptered := wcom.CBCEncrypterPrivkey([]byte(newPassphrase), decryptered)
ethAccount.Privkey = encryptered
encodedInfo := chain33Types.Encode(ethAccount)
return ethRelayer.db.SetSync(ethAccountKey, encodedInfo)
Chain33Account.Privkey = encryptered
encodedInfo := chain33Types.Encode(Chain33Account)
return ethRelayer.db.SetSync(chain33AccountKey, encodedInfo)
}
func (ethRelayer *Relayer4Ethereum) ImportChain33PrivateKey(passphrase, privateKeyStr string) error {
......@@ -164,9 +134,7 @@ func (ethRelayer *Relayer4Ethereum) ImportChain33PrivateKey(passphrase, privateK
}
ethRelayer.privateKey4Chain33 = priKey
if nil != ethRelayer.privateKey4Ethereum {
ethRelayer.unlockchan <- start
}
addr, err := pubKeyToAddress4Bty(priKey.PubKey().Bytes())
if nil != err {
return err
......@@ -181,33 +149,6 @@ func (ethRelayer *Relayer4Ethereum) ImportChain33PrivateKey(passphrase, privateK
return ethRelayer.db.SetSync(chain33AccountKey, encodedInfo)
}
func (ethRelayer *Relayer4Ethereum) ImportEthValidatorPrivateKey(passphrase, privateKeyStr string) error {
privateKeySli, err := chain33Common.FromHex(privateKeyStr)
if nil != err {
return err
}
privateKeyECDSA, err := crypto.ToECDSA(privateKeySli)
if nil != err {
errInfo := fmt.Sprintf("Failed to ToECDSA due to:%s", err.Error())
relayerLog.Info("RestorePrivateKeys", "Failed to ToECDSA:", err.Error())
return errors.New(errInfo)
}
ethRelayer.rwLock.Lock()
ethRelayer.privateKey4Ethereum = privateKeyECDSA
ethRelayer.rwLock.Unlock()
if nil != ethRelayer.privateKey4Chain33 {
ethRelayer.unlockchan <- start
}
Encryptered := wcom.CBCEncrypterPrivkey([]byte(passphrase), privateKeySli)
ethAccount := &x2ethTypes.Account4Relayer{
Privkey: Encryptered,
Addr: crypto.PubkeyToAddress(privateKeyECDSA.PublicKey).String(),
}
encodedInfo := chain33Types.Encode(ethAccount)
return ethRelayer.db.SetSync(ethAccountKey, encodedInfo)
}
//checksum: first four bytes of double-SHA256.
func checksum(input []byte) (cksum [4]byte) {
h := sha256.New()
......@@ -266,8 +207,7 @@ func newKeyAndStore(db dbm.DB, rand io.Reader, passphrase string) (privateKey *e
Privkey: Encryptered,
Addr: key.Address.Hex(),
}
encodedInfo := chain33Types.Encode(ethAccount)
_ = db.SetSync(ethAccountKey, encodedInfo)
_ = db
privateKeyStr = chain33Common.ToHex(privateKeyBytes)
addr = ethAccount.Addr
......
......@@ -42,12 +42,9 @@ type Relayer4Ethereum struct {
provider string
clientChainID *big.Int
bridgeRegistryAddr common.Address
//validatorName string
db dbm.DB
//passphase string
rwLock sync.RWMutex
privateKey4Chain33 chain33Crypto.PrivKey
privateKey4Ethereum *ecdsa.PrivateKey
ethValidator common.Address
totalTx4Eth2Chain33 int64
totalTx4Chain33ToEth int64
......@@ -110,15 +107,6 @@ func StartEthereumRelayer(rpcURL2Chain33 string, db dbm.DB, provider, registryAd
return relayer
}
func (ethRelayer *Relayer4Ethereum) SetPrivateKey4Ethereum(privateKey4Ethereum *ecdsa.PrivateKey) {
ethRelayer.rwLock.Lock()
defer ethRelayer.rwLock.Unlock()
ethRelayer.privateKey4Ethereum = privateKey4Ethereum
if ethRelayer.privateKey4Chain33 != nil {
ethRelayer.unlockchan <- start
}
}
func (ethRelayer *Relayer4Ethereum) recoverDeployPara() (err error) {
if nil == ethRelayer.deployInfo {
return nil
......@@ -141,24 +129,24 @@ func (ethRelayer *Relayer4Ethereum) recoverDeployPara() (err error) {
func (ethRelayer *Relayer4Ethereum) DeployContrcts() (bridgeRegistry string, err error) {
bridgeRegistry = ""
if nil == ethRelayer.deployInfo {
return bridgeRegistry, errors.New("No deploy info configured yet")
return bridgeRegistry, errors.New("no deploy info configured yet")
}
deployPrivateKey, err := crypto.ToECDSA(common.FromHex(ethRelayer.deployInfo.DeployerPrivateKey))
if nil != err {
return bridgeRegistry, err
}
if len(ethRelayer.deployInfo.ValidatorsAddr) != len(ethRelayer.deployInfo.InitPowers) {
return bridgeRegistry, errors.New("Not same number for validator address and power")
return bridgeRegistry, errors.New("not same number for validator address and power")
}
if len(ethRelayer.deployInfo.ValidatorsAddr) < 3 {
return bridgeRegistry, errors.New("The number of validator must be not less than 3")
return bridgeRegistry, errors.New("the number of validator must be not less than 3")
}
nilAddr := common.Address{}
//已经设置了注册合约地址,说明已经部署了相关的合约,不再重复部署
if ethRelayer.bridgeRegistryAddr != nilAddr {
return bridgeRegistry, errors.New("Contract deployed already")
return bridgeRegistry, errors.New("contract deployed already")
}
var validators []common.Address
......@@ -211,7 +199,7 @@ func (ethRelayer *Relayer4Ethereum) GetBalance(tokenAddr, owner string) (string,
func (ethRelayer *Relayer4Ethereum) ShowBridgeBankAddr() (string, error) {
if nil == ethRelayer.x2EthDeployInfo {
return "", errors.New("The relayer is not started yes")
return "", errors.New("the relayer is not started yes")
}
return ethRelayer.x2EthDeployInfo.BridgeBank.Address.String(), nil
......@@ -219,7 +207,7 @@ func (ethRelayer *Relayer4Ethereum) ShowBridgeBankAddr() (string, error) {
func (ethRelayer *Relayer4Ethereum) ShowBridgeRegistryAddr() (string, error) {
if nil == ethRelayer.x2EthDeployInfo {
return "", errors.New("The relayer is not started yes")
return "", errors.New("the relayer is not started yes")
}
return ethRelayer.x2EthDeployInfo.BridgeRegistry.Address.String(), nil
......@@ -241,10 +229,6 @@ func (ethRelayer *Relayer4Ethereum) IsProphecyPending(claimID [32]byte) (bool, e
return ethtxs.IsProphecyPending(claimID, ethRelayer.ethValidator, ethRelayer.x2EthContracts.Chain33Bridge)
}
func (ethRelayer *Relayer4Ethereum) MakeNewProphecyClaim(newProphecyClaimPara *ethtxs.NewProphecyClaimPara) (string, error) {
return ethtxs.MakeNewProphecyClaim(newProphecyClaimPara, ethRelayer.backend, ethRelayer.privateKey4Ethereum, ethRelayer.ethValidator, ethRelayer.x2EthContracts)
}
func (ethRelayer *Relayer4Ethereum) CreateBridgeToken(symbol string) (string, error) {
return ethtxs.CreateBridgeToken(symbol, ethRelayer.backend, ethRelayer.operatorInfo, ethRelayer.x2EthDeployInfo, ethRelayer.x2EthContracts)
}
......@@ -349,12 +333,7 @@ func (ethRelayer *Relayer4Ethereum) proc() {
continueFailCount := int32(0)
for range ethRelayer.unlockchan {
relayerLog.Info("Received ethRelayer.unlockchan")
if nil != ethRelayer.privateKey4Ethereum && nil != ethRelayer.privateKey4Chain33 && nilAddr != ethRelayer.bridgeRegistryAddr {
ethRelayer.ethValidator, err = ethtxs.LoadSender(ethRelayer.privateKey4Ethereum)
if nil != err {
errinfo := fmt.Sprintf("Failed to load validator for ethereum due to:%s", err.Error())
panic(errinfo)
}
if nil != ethRelayer.privateKey4Chain33 && nilAddr != ethRelayer.bridgeRegistryAddr {
relayerLog.Info("Ethereum relayer starts to run...")
ethRelayer.prePareSubscribeEvent()
//向bridgeBank订阅事件
......@@ -571,14 +550,14 @@ func (ethRelayer *Relayer4Ethereum) filterLogEventsProc(logchan chan<- types.Log
relayerLog.Info(title, "received logs with number", len(logs),
"start height", query.FromBlock.String(), "stop height", query.ToBlock.String())
for _, log := range logs {
relayerLog.Info(title, "received log with topics", log.Topics[0].Hex(), "BlockNumber", log.BlockNumber)
if _, exist := eventSig[log.Topics[0].Hex()]; !exist {
for _, logv := range logs {
relayerLog.Info(title, "received log with topics", logv.Topics[0].Hex(), "BlockNumber", logv.BlockNumber)
if _, exist := eventSig[logv.Topics[0].Hex()]; !exist {
continue
}
logchan <- log
relayerLog.Info(title, "get unprocessed log with topic:", log.Topics[0].String(),
"BlockNumber", log.BlockNumber)
logchan <- logv
relayerLog.Info(title, "get unprocessed log with topic:", logv.Topics[0].String(),
"BlockNumber", logv.BlockNumber)
}
if query.ToBlock.Int64() == curHeight {
......
......@@ -3,7 +3,6 @@ package relayer
import (
"errors"
"fmt"
"math/big"
"strconv"
"sync"
"sync/atomic"
......@@ -12,13 +11,11 @@ import (
"github.com/33cn/chain33/common/log/log15"
rpctypes "github.com/33cn/chain33/rpc/types"
chain33Types "github.com/33cn/chain33/types"
"github.com/33cn/plugin/plugin/dapp/x2Ethereum/ebrelayer/ethtxs"
"github.com/33cn/plugin/plugin/dapp/x2Ethereum/ebrelayer/relayer/chain33"
"github.com/33cn/plugin/plugin/dapp/x2Ethereum/ebrelayer/relayer/ethereum"
relayerTypes "github.com/33cn/plugin/plugin/dapp/x2Ethereum/ebrelayer/types"
"github.com/33cn/plugin/plugin/dapp/x2Ethereum/ebrelayer/utils"
"github.com/33cn/plugin/plugin/dapp/x2Ethereum/types"
"github.com/ethereum/go-ethereum/common"
lru "github.com/hashicorp/golang-lru"
)
......@@ -109,6 +106,9 @@ func (manager *Manager) SetPassphase(setPasswdReq relayerTypes.ReqSetPasswd, res
func (manager *Manager) ChangePassphase(setPasswdReq relayerTypes.ReqChangePasswd, result *interface{}) error {
manager.mtx.Lock()
defer manager.mtx.Unlock()
if setPasswdReq.OldPassphase == setPasswdReq.NewPassphase {
return errors.New("the old password is the same as the new one")
}
// 新密码合法性校验
if !utils.IsValidPassWord(setPasswdReq.NewPassphase) {
return chain33Types.ErrInvalidPassWord
......@@ -282,23 +282,6 @@ func (manager *Manager) ImportChain33PrivateKey4EthRelayer(privateKey string, re
return nil
}
//为ethrelayer导入chain33私钥,为向chain33发送交易时进行签名使用
func (manager *Manager) ImportEthValidatorPrivateKey(privateKey string, result *interface{}) error {
manager.mtx.Lock()
defer manager.mtx.Unlock()
if err := manager.checkPermission(); nil != err {
return err
}
if err := manager.ethRelayer.ImportEthValidatorPrivateKey(manager.passphase, privateKey); nil != err {
return err
}
*result = rpctypes.Reply{
IsOk: true,
Msg: "Succeed to import ethereum private key for validator",
}
return nil
}
//显示在chain33中以验证人validator身份进行登录的地址
func (manager *Manager) ShowChain33RelayerValidator(param interface{}, result *interface{}) error {
manager.mtx.Lock()
......@@ -502,38 +485,6 @@ func (manager *Manager) LockEthErc20Asset(lockEthErc20Asset relayerTypes.LockEth
return nil
}
func (manager *Manager) MakeNewProphecyClaim(newProphecyClaim relayerTypes.NewProphecyClaim, result *interface{}) error {
manager.mtx.Lock()
defer manager.mtx.Unlock()
if err := manager.checkPermission(); nil != err {
return err
}
var tokenAddress common.Address
if "" != newProphecyClaim.TokenAddr {
tokenAddress = common.HexToAddress(newProphecyClaim.TokenAddr)
}
bn := big.NewInt(1)
bn, _ = bn.SetString(types.TrimZeroAndDot(newProphecyClaim.Amount), 10)
newProphecyClaimPara := &ethtxs.NewProphecyClaimPara{
ClaimType: uint8(newProphecyClaim.ClaimType),
Chain33Sender: []byte(newProphecyClaim.Chain33Sender),
TokenAddr: tokenAddress,
EthReceiver: common.HexToAddress(newProphecyClaim.EthReceiver),
Symbol: newProphecyClaim.Symbol,
Amount: bn,
Txhash: common.FromHex(newProphecyClaim.TxHash),
}
txhash, err := manager.ethRelayer.MakeNewProphecyClaim(newProphecyClaimPara)
if nil != err {
return err
}
*result = rpctypes.Reply{
IsOk: true,
Msg: fmt.Sprintf("Tx:%s", txhash),
}
return nil
}
func (manager *Manager) IsProphecyPending(claimID [32]byte, result *interface{}) error {
manager.mtx.Lock()
defer manager.mtx.Unlock()
......
......@@ -11,8 +11,7 @@ message Account4Relayer {
}
message ValidatorAddr4EthRelayer {
string ethValidator = 1;
string chain33Validator = 2;
string chain33Validator = 1;
}
message Txhashes {
......
......@@ -22,8 +22,7 @@ func (m *Account4Relayer) String() string { return proto.CompactTextString(m) }
func (*Account4Relayer) ProtoMessage() {}
type ValidatorAddr4EthRelayer struct {
EthValidator string `protobuf:"bytes,1,opt,name=ethValidator" json:"ethValidator,omitempty"`
Chain33Validator string `protobuf:"bytes,2,opt,name=chain33Validator" json:"chain33Validator,omitempty"`
Chain33Validator string `protobuf:"bytes,1,opt,name=chain33Validator" json:"chain33Validator,omitempty"`
}
func (m *ValidatorAddr4EthRelayer) Reset() { *m = ValidatorAddr4EthRelayer{} }
......
......@@ -17,14 +17,11 @@ docker_chain33_ip=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPA
Chain33Cli="$GOPATH/src/github.com/33cn/plugin/build/chain33-cli --rpc_laddr http://${docker_chain33_ip}:8801"
chain33SenderAddr="14KEKbYtKKQm4wMthSK9J4La4nAiidGozt"
#chain33SenderAddrKey="CC38546E9E659D15E6B4893F0AB32A06D103931A8230B0BDE71459D2B27D6944"
# validatorsAddr=["0x92c8b16afd6d423652559c6e266cbe1c29bfd84f", "0x0df9a824699bc5878232c9e612fe1a5346a5a368", "0xcb074cb21cdddf3ce9c3c0a7ac4497d633c9d9f1", "0xd9dab021e74ecf475788ed7b61356056b2095830"]
ethValidatorAddrKeyA="3fa21584ae2e4fd74db9b58e2386f5481607dfa4d7ba0617aaa7858e5025dc1e"
ethValidatorAddrKeyB="a5f3063552f4483cfc20ac4f40f45b798791379862219de9e915c64722c1d400"
ethValidatorAddrKeyC="bbf5e65539e9af0eb0cfac30bad475111054b09c11d668fc0731d54ea777471e"
ethValidatorAddrKeyD="c9fa31d7984edf81b8ef3b40c761f1847f6fcd5711ab2462da97dc458f1f896b"
# 新增地址 chain33 需要导入地址 转入 10 bty当收费费
chain33Validator1="1GTxrmuWiXavhcvsaH5w9whgVxUrWsUMdV"
chain33Validator2="155ooMPBTF8QQsGAknkK7ei5D78rwDEFe6"
......@@ -34,11 +31,11 @@ chain33ValidatorKey1="0xd627968e445f2a41c92173225791bae1ba42126ae96c32f28f97ff8f
chain33ValidatorKey2="0x9d539bc5fd084eb7fe86ad631dba9aa086dba38418725c38d9751459f567da66"
chain33ValidatorKey3="0x0a6671f101e30a2cc2d79d77436b62cdf2664ed33eb631a9c9e3f3dd348a23be"
chain33ValidatorKey4="0x3818b257b05ee75b6e43ee0e3cfc2d8502342cf67caed533e3756966690b62a5"
ethReceiverAddr1="0xa4ea64a583f6e51c3799335b28a8f0529570a635"
ethReceiverAddrKey1="355b876d7cbcb930d5dfab767f66336ce327e082cbaa1877210c1bae89b1df71"
ethReceiverAddr2="0x0c05ba5c230fdaa503b53702af1962e08d0c60bf"
ethReceiverAddrKey2="9dc6df3a8ab139a54d8a984f54958ae0661f880229bf3bdbb886b87d58b56a08"
maturityDegree=10
function InitAndDeploy() {
......@@ -80,15 +77,6 @@ function EthImportKey() {
result=$(${CLID} relayer ethereum import_chain33privatekey -k "${chain33ValidatorKey4}")
cli_ret "${result}" "import_chain33privatekey"
result=$(${CLIA} relayer ethereum import_ethprivatekey -k "${ethValidatorAddrKeyA}")
cli_ret "${result}" "import_ethprivatekey"
result=$(${CLIB} relayer ethereum import_ethprivatekey -k "${ethValidatorAddrKeyB}")
cli_ret "${result}" "import_ethprivatekeyB"
result=$(${CLIC} relayer ethereum import_ethprivatekey -k "${ethValidatorAddrKeyC}")
cli_ret "${result}" "import_ethprivatekeyC"
result=$(${CLID} relayer ethereum import_ethprivatekey -k "${ethValidatorAddrKeyD}")
cli_ret "${result}" "import_ethprivatekeyD"
result=$(${CLIA} relayer chain33 import_privatekey -k "${ethValidatorAddrKeyA}")
cli_ret "${result}" "A relayer chain33 import_privatekey"
result=$(${CLIB} relayer chain33 import_privatekey -k "${ethValidatorAddrKeyB}")
......
......@@ -11,18 +11,11 @@ CLI="../build/ebcli_A"
chain33SenderAddr="14KEKbYtKKQm4wMthSK9J4La4nAiidGozt"
chain33SenderAddrKey="CC38546E9E659D15E6B4893F0AB32A06D103931A8230B0BDE71459D2B27D6944"
# 0x92C8b16aFD6d423652559C6E266cBE1c29Bfd84f
ethValidatorAddrKey="3fa21584ae2e4fd74db9b58e2386f5481607dfa4d7ba0617aaa7858e5025dc1e"
ethReceiverAddr1="0xa4ea64a583f6e51c3799335b28a8f0529570a635"
ethReceiverAddrKey1="355b876d7cbcb930d5dfab767f66336ce327e082cbaa1877210c1bae89b1df71"
ethReceiverAddr2="0x0c05ba5c230fdaa503b53702af1962e08d0c60bf"
ethReceiverAddrKey2="9dc6df3a8ab139a54d8a984f54958ae0661f880229bf3bdbb886b87d58b56a08"
ethReceiverAddr3="0x1919203bA8b325278d28Fb8fFeac49F2CD881A4e"
#ethReceiverAddrKey3="62ca4122aac0e6f35bed02fc15c7ddbdaa07f2f2a1821c8b8210b891051e3ee9"
prophecyTx0="0x112260c98aec81b3e235af47c355db720f60e751cce100fed6f334e1b1530bde"
prophecyTx1="0x222260c98aec81b3e235af47c355db720f60e751cce100fed6f334e1b1530bde"
......@@ -47,9 +40,6 @@ InitAndDeploy() {
result=$(${CLI} relayer ethereum import_chain33privatekey -k "${chain33SenderAddrKey}")
cli_ret "${result}" "import_chain33privatekey"
result=$(${CLI} relayer ethereum import_ethprivatekey -k "${ethValidatorAddrKey}")
cli_ret "${result}" "import_ethprivatekey"
echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
}
......
......@@ -8,9 +8,6 @@ set -x
source "./publicTest.sh"
CLIA="../build/ebcli_A"
CLIB="../build/ebcli_B"
CLIC="../build/ebcli_C"
CLID="../build/ebcli_D"
tokenAddr=""
chain33SenderAddr="14KEKbYtKKQm4wMthSK9J4La4nAiidGozt"
......@@ -72,11 +69,6 @@ function InitConfigFile() {
# 启动 B C D 的 ebrelayer 服务,导入私钥
function ImportCBDKey() {
echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
local ethValidatorAddrKeyA="3fa21584ae2e4fd74db9b58e2386f5481607dfa4d7ba0617aaa7858e5025dc1e"
local ethValidatorAddrKeyB="a5f3063552f4483cfc20ac4f40f45b798791379862219de9e915c64722c1d400"
local ethValidatorAddrKeyC="bbf5e65539e9af0eb0cfac30bad475111054b09c11d668fc0731d54ea777471e"
local ethValidatorAddrKeyD="c9fa31d7984edf81b8ef3b40c761f1847f6fcd5711ab2462da97dc458f1f896b"
for name in B C D; do
start_ebrelayer "./../build/$name/ebrelayer" "./../build/$name/ebrelayer.log"
......@@ -95,18 +87,6 @@ function ImportCBDKey() {
result=$(${CLIA} relayer ethereum import_chain33privatekey -k "${chain33SenderAddrKey}")
cli_ret "${result}" "import_chain33privatekey"
result=$(${CLIA} relayer ethereum import_ethprivatekey -k "${ethValidatorAddrKeyA}")
cli_ret "${result}" "import_ethprivatekey"
result=$(${CLIB} relayer ethereum import_ethprivatekey -k "${ethValidatorAddrKeyB}")
cli_ret "${result}" "import_ethprivatekeyB"
result=$(${CLIC} relayer ethereum import_ethprivatekey -k "${ethValidatorAddrKeyC}")
cli_ret "${result}" "import_ethprivatekeyC"
result=$(${CLID} relayer ethereum import_ethprivatekey -k "${ethValidatorAddrKeyD}")
cli_ret "${result}" "import_ethprivatekeyD"
echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
}
......
......@@ -16,21 +16,15 @@ tokenAddr=""
BridgeRegistry=""
chain33SenderAddr="14KEKbYtKKQm4wMthSK9J4La4nAiidGozt"
chain33SenderAddrKey="CC38546E9E659D15E6B4893F0AB32A06D103931A8230B0BDE71459D2B27D6944"
ethValidatorAddrKey="3fa21584ae2e4fd74db9b58e2386f5481607dfa4d7ba0617aaa7858e5025dc1e"
ethReceiverAddr1="0xa4ea64a583f6e51c3799335b28a8f0529570a635"
ethReceiverAddrKey1="355b876d7cbcb930d5dfab767f66336ce327e082cbaa1877210c1bae89b1df71"
ethReceiverAddr2="0x0c05ba5c230fdaa503b53702af1962e08d0c60bf"
ethReceiverAddrKey2="9dc6df3a8ab139a54d8a984f54958ae0661f880229bf3bdbb886b87d58b56a08"
#ethReceiverAddr3="0x1919203bA8b325278d28Fb8fFeac49F2CD881A4e"
#ethReceiverAddrKey3="62ca4122aac0e6f35bed02fc15c7ddbdaa07f2f2a1821c8b8210b891051e3ee9"
chain33Validator1="14KEKbYtKKQm4wMthSK9J4La4nAiidGozt"
chain33Validator2="12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv" #0x4257d8692ef7fe13c68b65d6a52f03933db2fa5ce8faf210b5b8b80c721ced01
chain33Validator3="1BqP2vHkYNjSgdnTqm7pGbnphLhtEhuJFi"
#BtyReceiever="1BqP2vHkYNjSgdnTqm7pGbnphLhtEhuJFi"
#ETHContractAddr="0x0000000000000000000000000000000000000000"
maturityDegree=10
function InitAndDeploy() {
......@@ -56,9 +50,6 @@ function EthImportKey() {
result=$(${CLI} relayer ethereum import_chain33privatekey -k "${chain33SenderAddrKey}")
cli_ret "${result}" "import_chain33privatekey"
result=$(${CLI} relayer ethereum import_ethprivatekey -k "${ethValidatorAddrKey}")
cli_ret "${result}" "import_ethprivatekey"
result=$(${CLI} relayer chain33 import_privatekey -k "${ethValidatorAddrKey}")
cli_ret "${result}" "import_ethprivatekey"
......
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