Commit 91f9d67f authored by whisker's avatar whisker

fix golint bug

parent fb2fd411
......@@ -28,8 +28,6 @@ func Cmd() *cobra.Command {
Args: cobra.MinimumNArgs(1),
}
cmd.AddCommand(
CreateRawEth2Chain33TxCmd(),
CreateRawWithdrawEthTxCmd(),
CreateRawWithdrawChain33TxCmd(),
CreateRawChain33ToEthTxCmd(),
CreateRawAddValidatorTxCmd(),
......@@ -50,140 +48,6 @@ func Cmd() *cobra.Command {
return cmd
}
// Eth2Chain33
func CreateRawEth2Chain33TxCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "create",
Short: "Create a Eth2Chain33 && lock a erc20 and mint a token in chain33",
Run: Eth2Chain33,
}
addEth2Chain33Flags(cmd)
return cmd
}
func addEth2Chain33Flags(cmd *cobra.Command) {
cmd.Flags().Int64("ethid", 0, "the ethereum chain ID which send asset to chain33")
_ = cmd.MarkFlagRequired("ethid")
cmd.Flags().StringP("bcontract", "b", "", "BridgeContractAddress")
_ = cmd.MarkFlagRequired("bcontract")
cmd.Flags().Int64("nonce", 0, "the nonce for this tx in ethereum")
_ = cmd.MarkFlagRequired("nonce")
cmd.Flags().StringP("csymbol", "t", "", "token symbol in chain33")
_ = cmd.MarkFlagRequired("csymbol")
cmd.Flags().StringP("tcontract", "q", "", "token contract address in ethereum")
_ = cmd.MarkFlagRequired("tcontract")
cmd.Flags().StringP("sender", "s", "", "ethereum sender address")
_ = cmd.MarkFlagRequired("sender")
cmd.Flags().StringP("receiver", "r", "", "chain33 receiver address")
_ = cmd.MarkFlagRequired("cExec")
cmd.Flags().StringP("validator", "v", "", "validator address")
_ = cmd.MarkFlagRequired("validator")
cmd.Flags().Float64P("amount", "a", float64(0), "the amount of this contract want to lock")
_ = cmd.MarkFlagRequired("amount")
cmd.Flags().Int64("claimtype", 0, "the type of this claim,lock=1,burn=2")
_ = cmd.MarkFlagRequired("claimtype")
}
func Eth2Chain33(cmd *cobra.Command, args []string) {
ethid, _ := cmd.Flags().GetInt64("ethid")
bcontract, _ := cmd.Flags().GetString("bcontract")
nonce, _ := cmd.Flags().GetInt64("nonce")
csymbol, _ := cmd.Flags().GetString("csymbol")
tcontract, _ := cmd.Flags().GetString("tcontract")
sender, _ := cmd.Flags().GetString("sender")
receiver, _ := cmd.Flags().GetString("receiver")
validator, _ := cmd.Flags().GetString("validator")
amount, _ := cmd.Flags().GetFloat64("amount")
claimtype, _ := cmd.Flags().GetInt64("claimtype")
nodeAddr, _ := cmd.Flags().GetString("node_addr")
decimal, err := utils.GetDecimalsFromNode(tcontract, nodeAddr)
if err != nil {
fmt.Println("get decimal error")
return
}
params := &types3.Eth2Chain33{
EthereumChainID: ethid,
BridgeContractAddress: bcontract,
Nonce: nonce,
IssuerDotSymbol: csymbol,
TokenContractAddress: tcontract,
EthereumSender: sender,
Chain33Receiver: receiver,
ValidatorAddress: validator,
Amount: strconv.FormatFloat(amount*1e8, 'f', 4, 64),
ClaimType: claimtype,
Decimals: decimal,
}
payLoad := types.MustPBToJSON(params)
createTx(cmd, payLoad, types3.NameEth2Chain33Action)
}
// WithdrawEth
func CreateRawWithdrawEthTxCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "withdraweth",
Short: "withdraw a tx && burn erc20 back to chain33",
Run: WithdrawEth,
}
addEth2Chain33Flags(cmd)
return cmd
}
func WithdrawEth(cmd *cobra.Command, args []string) {
ethid, _ := cmd.Flags().GetInt64("ethid")
bcontract, _ := cmd.Flags().GetString("bcontract")
nonce, _ := cmd.Flags().GetInt64("nonce")
csymbol, _ := cmd.Flags().GetString("csymbol")
tcontract, _ := cmd.Flags().GetString("tcontract")
sender, _ := cmd.Flags().GetString("sender")
receiver, _ := cmd.Flags().GetString("receiver")
validator, _ := cmd.Flags().GetString("validator")
amount, _ := cmd.Flags().GetFloat64("amount")
claimtype, _ := cmd.Flags().GetInt64("claimtype")
nodeAddr, _ := cmd.Flags().GetString("node_addr")
decimal, err := utils.GetDecimalsFromNode(tcontract, nodeAddr)
if err != nil {
fmt.Println("get decimal error")
return
}
params := &types3.Eth2Chain33{
EthereumChainID: ethid,
BridgeContractAddress: bcontract,
Nonce: nonce,
IssuerDotSymbol: csymbol,
TokenContractAddress: tcontract,
EthereumSender: sender,
Chain33Receiver: receiver,
ValidatorAddress: validator,
Amount: strconv.FormatFloat(amount*1e8, 'f', 4, 64),
ClaimType: claimtype,
Decimals: decimal,
}
payLoad := types.MustPBToJSON(params)
createTx(cmd, payLoad, types3.NameWithdrawEthAction)
}
// Burn
func CreateRawWithdrawChain33TxCmd() *cobra.Command {
cmd := &cobra.Command{
......
......@@ -50,8 +50,8 @@ func LogLockToEthBridgeClaim(event *events.LockEvent, ethereumChainID int64, bri
}
witnessClaim.Amount = event.Value.String()
witnessClaim.ClaimType = types.LOCK_CLAIM_TYPE
witnessClaim.ChainName = types.LOCK_CLAIM
witnessClaim.ClaimType = types.LockClaimType
witnessClaim.ChainName = types.LockClaim
witnessClaim.Decimal = decimal
return witnessClaim, nil
......@@ -72,8 +72,8 @@ func LogBurnToEthBridgeClaim(event *events.BurnEvent, ethereumChainID int64, bri
witnessClaim.EthereumSender = event.OwnerFrom.String()
witnessClaim.Chain33Receiver = string(recipient)
witnessClaim.Amount = event.Amount.String()
witnessClaim.ClaimType = types.BURN_CLAIM_TYPE
witnessClaim.ChainName = types.BURN_CLAIM
witnessClaim.ClaimType = types.BurnClaimType
witnessClaim.ChainName = types.BurnClaim
witnessClaim.Decimal = decimal
return witnessClaim, nil
......
......@@ -18,9 +18,7 @@ import (
//---------------- Ethereum(eth/erc20) --> Chain33-------------------//
// Eth2Chain33类型的交易是Ethereum侧锁定一定金额的eth或者erc20到合约中
// 然后relayer端订阅到该消息后向chain33发送该类型消息
// 本端在验证该类型的请求合理后铸币,并生成相同数额的token
// 在chain33上为ETH/ERC20铸币
func (x *x2ethereum) Exec_Eth2Chain33Lock(payload *x2eTy.Eth2Chain33, tx *types.Transaction, index int) (*types.Receipt, error) {
action := newAction(x, tx, int32(index))
if action == nil {
......@@ -33,7 +31,7 @@ func (x *x2ethereum) Exec_Eth2Chain33Lock(payload *x2eTy.Eth2Chain33, tx *types.
}
//---------------- Chain33(eth/erc20)------> Ethereum -------------------//
// WithdrawChain33类型的交易是将Eth端因Chain33端锁定所生成的token返还给Chain33端(Burn)
// 在chain33端将铸的币销毁,返还给eth
func (x *x2ethereum) Exec_Chain33ToEthBurn(payload *x2eTy.Chain33ToEth, tx *types.Transaction, index int) (*types.Receipt, error) {
action := newAction(x, tx, int32(index))
if action == nil {
......@@ -42,9 +40,8 @@ func (x *x2ethereum) Exec_Chain33ToEthBurn(payload *x2eTy.Chain33ToEth, tx *type
return action.procChain33ToEth_burn(payload)
}
//---------------- Chain33(eth/erc20) --> Ethereum-------------------//
// 将因ethereum端锁定的eth或者erc20而在chain33端生成的token返还
//---------------- Ethereum (bty) --> Chain33-------------------//
// 在eth端将铸的bty币销毁,返还给chain33
func (x *x2ethereum) Exec_Eth2Chain33Burn(payload *x2eTy.Eth2Chain33, tx *types.Transaction, index int) (*types.Receipt, error) {
action := newAction(x, tx, int32(index))
if action == nil {
......@@ -56,8 +53,8 @@ func (x *x2ethereum) Exec_Eth2Chain33Burn(payload *x2eTy.Eth2Chain33, tx *types.
return action.procEth2Chain33_burn(payload)
}
// Chain33ToEth类型的交易是Chain33侧在本端发出申请
// 在本端锁定一定数额的token,然后在ethereum端生成相同数额的token
//---------------- Chain33 --> Ethereum (bty) -------------------//
// 在 ethereum 上为 chain33 铸币
func (x *x2ethereum) Exec_Chain33ToEthLock(payload *x2eTy.Chain33ToEth, tx *types.Transaction, index int) (*types.Receipt, error) {
action := newAction(x, tx, int32(index))
if action == nil {
......@@ -161,7 +158,7 @@ func checkTxSignBySpecificAddr(tx *types.Transaction, addrs []string) error {
for _, addr := range addrs {
if signAddr == addr {
exist = true
continue
break
}
}
......@@ -169,7 +166,7 @@ func checkTxSignBySpecificAddr(tx *types.Transaction, addrs []string) error {
return x2eTy.ErrInvalidAdminAddress
}
if tx.CheckSign() == false {
if !tx.CheckSign() {
return types.ErrSign
}
return nil
......
......@@ -29,7 +29,6 @@ var (
chain33Receiver = "1BqP2vHkYNjSgdnTqm7pGbnphLhtEhuJFi"
bridgeContractAddress = "0xC4cE93a5699c68241fc2fB503Fb0f21724A624BB"
symbol = "eth"
coinExec = "x2ethereum"
tokenContractAddress = "0x0000000000000000000000000000000000000000"
ethereumAddr = "0x7B95B6EC7EbD73572298cEf32Bb54FA408207359"
addValidator1 = "12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv"
......@@ -172,22 +171,21 @@ func (x *suiteX2Ethereum) Test_4_Eth2Chain33() {
EthereumChainID: 0,
BridgeContractAddress: bridgeContractAddress,
Nonce: 0,
LocalCoinSymbol: symbol,
LocalCoinExec: coinExec,
IssuerDotSymbol: symbol,
TokenContractAddress: tokenContractAddress,
EthereumSender: ethereumAddr,
Chain33Receiver: chain33Receiver,
ValidatorAddress: addValidator1,
Amount: "10",
ClaimType: int64(types2.LOCK_CLAIM_TYPE),
ClaimType: int64(types2.LockClaimType),
}
receipt, err := x.action.procMsgEth2Chain33(payload)
receipt, err := x.action.procEth2Chain33_lock(payload)
x.NoError(err)
x.setDb(receipt)
payload.ValidatorAddress = addValidator2
receipt, err = x.action.procMsgEth2Chain33(payload)
receipt, err = x.action.procEth2Chain33_lock(payload)
x.NoError(err)
x.setDb(receipt)
......@@ -197,21 +195,25 @@ func (x *suiteX2Ethereum) Test_4_Eth2Chain33() {
x.query_GetEthProphecy("000x7B95B6EC7EbD73572298cEf32Bb54FA408207359", types2.EthBridgeStatus_SuccessStatusText)
x.query_GetSymbolTotalAmountByTxType(symbol, 1, "lock", 10)
payload.Amount = "3"
payload.Nonce = 1
payload.ClaimType = int64(types2.BURN_CLAIM_TYPE)
payload.ValidatorAddress = addValidator1
receipt, err = x.action.procWithdrawEth(payload)
payload1 := &types2.Chain33ToEth{
TokenContract: tokenContractAddress,
Chain33Sender: addValidator1,
EthereumReceiver: ethereumAddr,
Amount: "3",
IssuerDotSymbol: "coins.bty",
Decimals: 8,
}
receipt, err = x.action.procChain33ToEth_burn(payload1)
x.NoError(err)
x.setDb(receipt)
payload.ValidatorAddress = addValidator2
payload.Amount = "2"
receipt, err = x.action.procWithdrawEth(payload)
payload1.Amount = "2"
_, err = x.action.procChain33ToEth_burn(payload1)
x.Equal(err, types2.ErrClaimInconsist)
payload.Amount = "3"
receipt, err = x.action.procWithdrawEth(payload)
payload1.Amount = "3"
receipt, err = x.action.procChain33ToEth_burn(payload1)
x.NoError(err)
x.setDb(receipt)
......@@ -219,23 +221,25 @@ func (x *suiteX2Ethereum) Test_4_Eth2Chain33() {
x.query_GetSymbolTotalAmount(symbol, 1, 7)
x.query_GetSymbolTotalAmountByTxType(symbol, 1, "withdraw", 3)
payload.Amount = "10"
payload.Nonce = 2
payload.ValidatorAddress = addValidator1
receipt, err = x.action.procWithdrawEth(payload)
payload.ValidatorAddress = addValidator2
receipt, err = x.action.procWithdrawEth(payload)
x.Equal(types.ErrNoBalance, err)
//payload.Amount = "10"
//payload.Nonce = 2
//payload.ValidatorAddress = addValidator1
//receipt, err = x.action.procChain33ToEth_burn(payload)
//payload.ValidatorAddress = addValidator2
//receipt, err = x.action.procChain33ToEth_burn(payload)
//x.Equal(types.ErrNoBalance, err)
payload.Amount = "1"
payload.Nonce = 3
payload.ClaimType = int64(types2.LOCK_CLAIM_TYPE)
payload.ClaimType = int64(types2.LockClaimType)
payload.ValidatorAddress = addValidator1
receipt, err = x.action.procMsgEth2Chain33(payload)
receipt, err = x.action.procEth2Chain33_lock(payload)
x.NoError(err)
x.setDb(receipt)
payload.ValidatorAddress = addValidator2
receipt, err = x.action.procMsgEth2Chain33(payload)
receipt, err = x.action.procEth2Chain33_lock(payload)
x.NoError(err)
x.setDb(receipt)
x.query_GetEthProphecy("030x7B95B6EC7EbD73572298cEf32Bb54FA408207359", types2.EthBridgeStatus_SuccessStatusText)
......@@ -248,32 +252,31 @@ func (x *suiteX2Ethereum) Test_5_Chain33ToEth() {
Chain33Sender: addValidator1,
EthereumReceiver: ethereumAddr,
Amount: "5",
LocalCoinSymbol: "bty",
LocalCoinExec: coinExec,
IssuerDotSymbol: "coins.bty",
}
receipt, err := x.action.procMsgLock(msgLock)
receipt, err := x.action.procChain33ToEth_lock(msgLock)
x.NoError(err)
x.setDb(receipt)
x.query_GetSymbolTotalAmount("bty", 2, 5)
x.query_GetSymbolTotalAmountByTxType("bty", 2, "lock", 5)
msgLock.Amount = "4"
receipt, err = x.action.procMsgBurn(msgLock)
x.NoError(err)
x.setDb(receipt)
x.query_GetSymbolTotalAmount("bty", 2, 1)
x.query_GetSymbolTotalAmountByTxType("bty", 2, "withdraw", 4)
receipt, err = x.action.procMsgBurn(msgLock)
x.Equal(err, types.ErrNoBalance)
msgLock.Amount = "1"
receipt, err = x.action.procMsgBurn(msgLock)
x.NoError(err)
x.setDb(receipt)
//msgLock.Amount = "4"
//receipt, err = x.action.procEth2Chain33_burn(msgLock)
//x.NoError(err)
//x.setDb(receipt)
//
//x.query_GetSymbolTotalAmount("bty", 2, 1)
//x.query_GetSymbolTotalAmountByTxType("bty", 2, "withdraw", 4)
//
//receipt, err = x.action.procEth2Chain33_burn(msgLock)
//x.Equal(err, types.ErrNoBalance)
//
//msgLock.Amount = "1"
//receipt, err = x.action.procEth2Chain33_burn(msgLock)
//x.NoError(err)
//x.setDb(receipt)
x.query_GetSymbolTotalAmount("bty", 2, 0)
x.query_GetSymbolTotalAmountByTxType("bty", 2, "withdraw", 5)
......
package executor
import (
"errors"
"fmt"
"strconv"
......@@ -88,13 +87,13 @@ func NewClaim(id string, validatorAddress string, content string) x2eTy.OracleCl
//通过ethchain33结构构造一个OracleClaim结构,包括生成唯一的ID
func CreateOracleClaimFromEthClaim(ethClaim x2eTy.Eth2Chain33) (x2eTy.OracleClaim, error) {
if ethClaim.ClaimType != int64(x2eTy.LOCK_CLAIM_TYPE) && ethClaim.ClaimType != int64(x2eTy.BURN_CLAIM_TYPE) {
if ethClaim.ClaimType != int64(x2eTy.LockClaimType) && ethClaim.ClaimType != int64(x2eTy.BurnClaimType) {
return x2eTy.OracleClaim{}, x2eTy.ErrInvalidClaimType
}
oracleID := strconv.Itoa(int(ethClaim.EthereumChainID)) + strconv.Itoa(int(ethClaim.Nonce)) + ethClaim.EthereumSender + ethClaim.TokenContractAddress
if ethClaim.ClaimType == int64(x2eTy.LOCK_CLAIM_TYPE) {
if ethClaim.ClaimType == int64(x2eTy.LockClaimType) {
oracleID = oracleID + "lock"
} else if ethClaim.ClaimType == int64(x2eTy.BURN_CLAIM_TYPE) {
} else if ethClaim.ClaimType == int64(x2eTy.BurnClaimType) {
oracleID = oracleID + "burn"
}
claimContent := NewOracleClaimContent(ethClaim.Chain33Receiver, ethClaim.Amount, ethClaim.ClaimType, ethClaim.Decimals)
......@@ -110,7 +109,7 @@ func CreateOracleClaimFromOracleString(oracleClaimString string) (x2eTy.OracleCl
bz := []byte(oracleClaimString)
if err := types.Decode(bz, &oracleClaimContent); err != nil {
return x2eTy.OracleClaimContent{}, errors.New(fmt.Sprintf("failed to parse claim: %s", err.Error()))
return x2eTy.OracleClaimContent{}, fmt.Errorf("failed to parse claim: %s", err.Error())
}
return oracleClaimContent, nil
......
......@@ -57,7 +57,8 @@ func (x *x2ethereum) Query_GetValidators(in *x2eTy.QueryValidatorsParams) (types
}
// 未知的地址
return nil, x2eTy.ErrInvalidValidator
} else {
}
validatorsRes := new(x2eTy.ReceiptQueryValidator)
var totalPower int64
for _, vv := range v.Validators {
......@@ -66,7 +67,7 @@ func (x *x2ethereum) Query_GetValidators(in *x2eTy.QueryValidatorsParams) (types
validatorsRes.Validators = v.Validators
validatorsRes.TotalPower = totalPower
return validatorsRes, nil
}
}
func (x *x2ethereum) Query_GetTotalPower(in *x2eTy.QueryTotalPowerParams) (types.Message, error) {
......
......@@ -37,7 +37,7 @@ func (o *Oracle) ProcessSuccessfulClaimForLock(claim, execAddr string, accDB *ac
receiverAddress := oracleClaim.Chain33Receiver
if oracleClaim.ClaimType == int64(x2eTy.LOCK_CLAIM_TYPE) {
if oracleClaim.ClaimType == int64(x2eTy.LockClaimType) {
//铸币到相关的tokenSymbolBank账户下
amount, _ := strconv.ParseInt(x2eTy.TrimZeroAndDot(oracleClaim.Amount), 10, 64)
......@@ -62,7 +62,7 @@ func (o *Oracle) ProcessSuccessfulClaimForBurn(claim, execAddr, tokenSymbol stri
senderAddr := oracleClaim.Chain33Receiver
if oracleClaim.ClaimType == int64(x2eTy.BURN_CLAIM_TYPE) {
if oracleClaim.ClaimType == int64(x2eTy.BurnClaimType) {
amount, _ := strconv.ParseInt(x2eTy.TrimZeroAndDot(oracleClaim.Amount), 10, 64)
receipt, err = accDB.ExecTransfer(address.ExecAddress(tokenSymbol), senderAddr, execAddr, amount)
if err != nil {
......@@ -441,7 +441,6 @@ func (o *Oracle) GetValidatorArray() (*x2eTy.ValidatorList, error) {
func (o *Oracle) SetConsensusThreshold(ConsensusThreshold int64) {
o.consensusThreshold = ConsensusThreshold
elog.Info("SetConsensusNeeded", "nowConsensusNeeded", o.consensusThreshold)
return
}
func (o *Oracle) GetConsensusThreshold() int64 {
......
package x2Ethereum
package x2ethereum
import (
"github.com/33cn/chain33/pluginmgr"
......
......@@ -64,8 +64,8 @@ const DefaultConsensusNeeded = int64(70)
const (
DirEth2Chain33 = "eth2chain33"
DirChain33ToEth = "chain33toeth"
LOCK_CLAIM = "lock"
BURN_CLAIM = "burn"
LockClaim = "lock"
BurnClaim = "burn"
)
var DirectionType = [3]string{"", DirEth2Chain33, DirChain33ToEth}
......@@ -81,6 +81,6 @@ const (
)
const (
LOCK_CLAIM_TYPE = int32(1)
BURN_CLAIM_TYPE = int32(2)
LockClaimType = int32(1)
BurnClaimType = int32(2)
)
......@@ -9,13 +9,6 @@ import (
"strings"
"github.com/33cn/chain33/common/address"
log "github.com/33cn/chain33/common/log/log15"
)
var (
//日志
clog = log.New("module", "common")
)
func Float64ToBytes(float float64) []byte {
......
......@@ -67,38 +67,38 @@ func InitExecutor(cfg *types.Chain33Config) {
types.RegistorExecutor(X2ethereumX, NewType(cfg))
}
type x2ethereumType struct {
type X2ethereumType struct {
types.ExecTypeBase
}
func NewType(cfg *types.Chain33Config) *x2ethereumType {
c := &x2ethereumType{}
func NewType(cfg *types.Chain33Config) *X2ethereumType {
c := &X2ethereumType{}
c.SetChild(c)
c.SetConfig(cfg)
return c
}
func (x *x2ethereumType) GetName() string {
func (x *X2ethereumType) GetName() string {
return X2ethereumX
}
// GetPayload 获取合约action结构
func (x *x2ethereumType) GetPayload() types.Message {
func (x *X2ethereumType) GetPayload() types.Message {
return &X2EthereumAction{}
}
// GeTypeMap 获取合约action的id和name信息
func (x *x2ethereumType) GetTypeMap() map[string]int32 {
func (x *X2ethereumType) GetTypeMap() map[string]int32 {
return actionMap
}
// GetLogMap 获取合约log相关信息
func (x *x2ethereumType) GetLogMap() map[int64]*types.LogInfo {
func (x *X2ethereumType) GetLogMap() map[int64]*types.LogInfo {
return logMap
}
// ActionName get PrivacyType action name
func (x x2ethereumType) ActionName(tx *types.Transaction) string {
func (x X2ethereumType) ActionName(tx *types.Transaction) string {
var action X2EthereumAction
err := types.Decode(tx.Payload, &action)
if err != nil {
......@@ -137,7 +137,7 @@ func (action *X2EthereumAction) GetActionName() string {
}
// CreateTx token 创建合约
func (x *x2ethereumType) CreateTx(action string, msg json.RawMessage) (*types.Transaction, error) {
func (x *X2ethereumType) CreateTx(action string, msg json.RawMessage) (*types.Transaction, error) {
tx, err := x.ExecTypeBase.CreateTx(action, msg)
if err != nil {
tlog.Error("token CreateTx failed", "err", err, "action", action, "msg", string(msg))
......
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