Commit b5198fce authored by duanjinfei's avatar duanjinfei

Init project

parent 28dd40c2
File added
.idea
logs
# contract-case # contract-case
solc --abi --bin ChainCoinTransfer.sol -o .
solc --abi --bin OneChainCoinTransfer.sol -o .
solc --abi --bin TwoChainCoinTransfer.sol -o .
abigen --bin ChainCoinTransfer.bin --abi ChainCoinTransfer.abi --pkg contractCoin --type ChainCoinTransfer --out ../compile/ChainCoinTransfer.go
abigen --bin OneChainCoinTransfer.bin --abi OneChainCoinTransfer.abi --pkg contractCoin --type OneChainCoinTransfer --out ../compile/OneChainCoinTransfer.go
abigen --bin TwoChainCoinTransfer.bin --abi TwoChainCoinTransfer.abi --pkg contractCoin --type TwoChainCoinTransfer --out ../compile/TwoChainCoinTransfer.go
solc --abi --bin ERC20.sol -o ../abi_bin
solc --abi --bin TokenTransfer.sol -o ../abi_bin
solc --abi --bin OneTokenTransfer.sol -o ../abi_bin
solc --abi --bin TwoTokenTransfer.sol -o ../abi_bin
abigen --bin ERC20.bin --abi ERC20.abi --pkg contractToken20 --type ERC20 --out ../compile/ERC20.go
abigen --bin TokenTransfer.bin --abi TokenTransfer.abi --pkg contractToken20 --type TokenTransfer --out ../compile/TokenTransfer.go
abigen --bin OneTokenTransfer.bin --abi OneTokenTransfer.abi --pkg contractToken20 --type OneTokenTransfer --out ../compile/OneTokenTransfer.go
abigen --bin TwoTokenTransfer.bin --abi TwoTokenTransfer.abi --pkg contractToken20 --type TwoTokenTransfer --out ../compile/TwoTokenTransfer.go
solc --abi --bin contract_abi/erc721_transfer/contract/ERC721.sol -o contract_abi/erc721_transfer/abi_bin --overwrite
solc --abi --bin contract_abi/erc721_transfer/contract/NftTokenTransfer.sol -o contract_abi/erc721_transfer/abi_bin --overwrite
solc --abi --bin contract_abi/erc721_transfer/contract/OneNftTokenTransfer.sol -o contract_abi/erc721_transfer/abi_bin --overwrite
solc --abi --bin contract_abi/erc721_transfer/contract/TwoNftTokenTransfer.sol -o contract_abi/erc721_transfer/abi_bin --overwrite
abigen --bin ERC721.bin --abi ERC721.abi --pkg contractToken721 --type ERC721 --out ../compile/ERC721.go
abigen --bin NftTokenTransfer.bin --abi NftTokenTransfer.abi --pkg contractToken721 --type NftTokenTransfer --out ../compile/NftTokenTransfer.go
abigen --bin OneNftTokenTransfer.bin --abi OneNftTokenTransfer.abi --pkg contractToken721 --type OneNftTokenTransfer --out ../compile/OneNftTokenTransfer.go
abigen --bin TwoNftTokenTransfer.bin --abi TwoNftTokenTransfer.abi --pkg contractToken721 --type TwoNftTokenTransfer --out ../compile/TwoNftTokenTransfer.go
solc --abi --bin contract_abi/read_write/contract/ReadWriteBlock.sol -o contract_abi/read_write/abi_bin --overwrite
solc --abi --bin contract_abi/read_write/contract/OneReadWriteVar.sol -o contract_abi/read_write/abi_bin --overwrite
solc --abi --bin contract_abi/read_write/contract/ReadWriteVar.sol -o contract_abi/read_write/abi_bin --overwrite
abigen --bin OneReadWriteVar.bin --abi OneReadWriteVar.abi --pkg contractReadWrite --type OneReadWriteVar --out ../compile/OneReadWriteVar.go
abigen --bin ReadWriteBlock.bin --abi ReadWriteBlock.abi --pkg contractReadWrite --type ReadWriteBlock --out ../compile/ReadWriteBlock.go
abigen --bin ReadWriteVar.bin --abi ReadWriteVar.abi --pkg contractReadWrite --type ReadWriteVar --out ../compile/ReadWriteVar.go
This diff is collapsed.
{
"deployAddr": "0xe2bA4B27E835f3D5A8f74B53aD6b8b6264D3F501",
"deployPrv": "115725efa0b457a764bb0b73b79a26605a54a5025d825b5a627f69354cdbbbf4",
"rpcNode": "http://54.72.101.87:50000",
"chainId": 155,
"goRoutine": 1,
"generateAccCount": 500,
"isDeployContract": false,
"isInitAccountBalance": false,
"startTokenId": 1,
"endTokenId": 10,
"transferType": {
"NotAssociatedFlag": true,
"PartialAssociation": false,
"FullyAssociative": false,
"Coin": true,
"Coin_Transfer":true,
"One_Coin_Transfer": true,
"Two_Coin_Transfer":true,
"ERC20": true,
"Token20_Transfer":true,
"One_Token20_Transfer": true,
"Two_Token20_Transfer":true,
"ERC721": true,
"Token721_Transfer":true,
"One_Token721_Transfer": true,
"Two_Token721_Transfer":true,
"Read_Write": true,
"One_Read_Write":true,
"Read_Chain": true
}
}
{
"Coin_Transfer": "0xf52c689ced325ba52891f2b90f8ab36c93eaaf67",
"ERC20": "0x9b5b83609915089b0a534b4bd0059d4514c55d26",
"ERC721": "0x92e96c2f924dc4871e5a8fddde4983423533bbe7",
"One_Coin_Transfer": "0x117cd28c021318c06f9670fd9fe484d4c9dfcb13",
"One_Read_Write": "0xc588945f57f672f1b346fe8a99e368d5a240a50d",
"One_Token20_Transfer": "0xa2b4d23faa81c0599bb537a426bb4dfeba39f58f",
"One_Token721_Transfer": "0xa7afc31cdbc0e37d2c290a7ca82429bb3bcc588b",
"Read_Chain": "0x8f0d51ad96f91170677cb1295ac31eaa8b9f9a33",
"Read_Write": "0x07872fdda3af5ff4f8fbdebbc022dfcb4fd8e022",
"Token20_Transfer": "0x7a0047ee9c89646e2df0de21a627827aa777f23c",
"Token721_Transfer": "0xdb12ab942b4745a27a024b41c2cd6f55220e9316",
"Two_Coin_Transfer": "0x46cdadb68998d6c60e24f085a163baf2861be6b3",
"Two_Token20_Transfer": "0xb4176da3ecd693cb257f008502e43ca9aefc981b",
"Two_Token721_Transfer": "0x63a18b3cc9113780bc405b9f9ffbf6988b52560a"
}
\ No newline at end of file
package constant
const (
COIN = "Coin"
COIN_TRANSFER = "Coin_Transfer"
ONE_COIN_TRANSFER = "One_Coin_Transfer"
TWO_COIN_TRANSFER = "Two_Coin_Transfer"
ERC20 = "ERC20"
TOKEN20_TRANSFER = "Token20_Transfer"
ONE_TOKEN20_TRANSFER = "One_Token20_Transfer"
TWO_TOKEN20_TRANSFER = "Two_Token20_Transfer"
ERC721 = "ERC721"
TOKEN721_TRANSFER = "Token721_Transfer"
ONE_TOKEN721_TRANSFER = "One_Token721_Transfer"
TWO_TOKEN721_TRANSFER = "Two_Token721_Transfer"
READ_WRITE = "Read_Write"
ONE_READ_WRITE = "One_Read_Write"
READ_CHAIN = "Read_Chain"
)
package coin
import (
contractCoin "contract-case/contract_abi/coin_transfer/compile"
"contract-case/log"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"math/big"
)
type ContractCoinOneTrade struct {
ChainContractAdr common.Address
ToAddr []common.Address
Amount *big.Int
}
func (trade *ContractCoinOneTrade) OneTransferSignTx(tranOpts *bind.TransactOpts, oneChainCoinTransfer *contractCoin.OneChainCoinTransfer) (*types.Transaction, error) {
oneTransferTx, err := oneChainCoinTransfer.OneTransfer(tranOpts, trade.ChainContractAdr, trade.ToAddr, trade.Amount)
if err != nil {
log.Errorf("OneTransferSignTx func oneTransfer tx error: %s", err)
return nil, err
}
log.Info("OneTransfer:", oneTransferTx.Hash())
return oneTransferTx, nil
}
package coin
import (
contractCoin "contract-case/contract_abi/coin_transfer/compile"
"contract-case/log"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"math/big"
)
type ContractCoinTrade struct {
ToAddr []common.Address
Amount *big.Int
}
func (trade *ContractCoinTrade) TransferSignTx(tranOpts *bind.TransactOpts, coinTransfer *contractCoin.ChainCoinTransfer) (*types.Transaction, error) {
transferTx, err := coinTransfer.Transfer(tranOpts, trade.ToAddr, trade.Amount)
if err != nil {
log.Errorf("TransferSignTx func transfer tx error: %s", err)
return nil, err
}
log.Info("transferTx:", transferTx.Hash())
return transferTx, nil
}
package coin
import (
contractCoin "contract-case/contract_abi/coin_transfer/compile"
"contract-case/log"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"math/big"
)
type ContractCoinTwoTrade struct {
OneChainContractAddr common.Address
ChainContractAddr common.Address
ToAddr []common.Address
Amount *big.Int
}
func (trade *ContractCoinTwoTrade) TwoTransferSignTx(tranOpts *bind.TransactOpts, twoChainCoinTransfer *contractCoin.TwoChainCoinTransfer) (*types.Transaction, error) {
twoTransferTx, err := twoChainCoinTransfer.TwoTransfer(tranOpts, trade.OneChainContractAddr, trade.ChainContractAddr, trade.ToAddr, trade.Amount)
if err != nil {
log.Errorf("TwoTransferSignTx func two transfer tx error: %s", err)
return nil, err
}
log.Info("twoTransferTx:", twoTransferTx.Hash())
return twoTransferTx, nil
}
package coin
import (
"contract-case/log"
"contract-case/util"
"crypto/ecdsa"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"math/big"
)
type Trade struct {
FromPrv *ecdsa.PrivateKey
FromNonce *big.Int
ToAddr *common.Address
Amount *big.Int
Gas *big.Int
GasPrice *big.Int
ChainId *big.Int
}
func (coinTrade *Trade) CoinTransferSignTx() (*types.Transaction, error) {
txData := &types.LegacyTx{
Nonce: coinTrade.FromNonce.Uint64(),
To: coinTrade.ToAddr,
Value: coinTrade.Amount,
Gas: coinTrade.Gas.Uint64(),
GasPrice: coinTrade.GasPrice,
Data: nil,
}
tx, err := util.SignNewTx(txData, coinTrade.ChainId, coinTrade.FromPrv)
if err != nil {
log.Errorf("Coin transfer sign tx err: %s", err.Error())
return nil, err
}
return tx, nil
}
package deploy
import (
"contract-case/constant"
coin "contract-case/contract_abi/coin_transfer/compile"
erc20 "contract-case/contract_abi/erc20_transfer/compile"
erc721 "contract-case/contract_abi/erc721_transfer/compile"
rw "contract-case/contract_abi/read_write/compile"
"contract-case/log"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/ethclient"
)
var DeployFunc = make([]func(auth *bind.TransactOpts, client *ethclient.Client) (common.Address, *types.Transaction, string), 0)
func init() {
DeployFunc = append(DeployFunc, GetDeployERC20Tx)
DeployFunc = append(DeployFunc, GetDeployTokenTransferTx)
DeployFunc = append(DeployFunc, GetDeployOneTokenTransferTx)
DeployFunc = append(DeployFunc, GetDeployTwoTokenTransferTx)
DeployFunc = append(DeployFunc, GetDeployChainCoinTransferTx)
DeployFunc = append(DeployFunc, GetDeployOneChainCoinTransferTx)
DeployFunc = append(DeployFunc, GetDeployTwoChainCoinTransferTx)
DeployFunc = append(DeployFunc, GetDeployErc721)
DeployFunc = append(DeployFunc, GetDeployNftTokenTransfer)
DeployFunc = append(DeployFunc, GetDeployOneNftTokenTransferTx)
DeployFunc = append(DeployFunc, GetDeployTwoNftTokenTransferTx)
DeployFunc = append(DeployFunc, GetDeployReadWriteVarTx)
DeployFunc = append(DeployFunc, GetDeployOneReadWriteVarTx)
DeployFunc = append(DeployFunc, GetDeployReadWriteBlock)
}
func GetDeployERC20Tx(auth *bind.TransactOpts, client *ethclient.Client) (common.Address, *types.Transaction, string) {
addr, tx, _, err := erc20.DeployERC20(auth, client, "test", "case")
if err != nil {
log.Fatal(err)
}
return addr, tx, constant.ERC20
}
func GetDeployTokenTransferTx(auth *bind.TransactOpts, client *ethclient.Client) (common.Address, *types.Transaction, string) {
addr, tx, _, err := erc20.DeployTokenTransfer(auth, client)
if err != nil {
log.Fatal(err)
}
return addr, tx, constant.TOKEN20_TRANSFER
}
func GetDeployOneTokenTransferTx(auth *bind.TransactOpts, client *ethclient.Client) (common.Address, *types.Transaction, string) {
addr, tx, _, err := erc20.DeployOneTokenTransfer(auth, client)
if err != nil {
log.Fatal(err)
}
return addr, tx, constant.ONE_TOKEN20_TRANSFER
}
func GetDeployTwoTokenTransferTx(auth *bind.TransactOpts, client *ethclient.Client) (common.Address, *types.Transaction, string) {
addr, tx, _, err := erc20.DeployTwoTokenTransfer(auth, client)
if err != nil {
log.Fatal(err)
}
return addr, tx, constant.TWO_TOKEN20_TRANSFER
}
func GetDeployChainCoinTransferTx(auth *bind.TransactOpts, client *ethclient.Client) (common.Address, *types.Transaction, string) {
addr, tx, _, err := coin.DeployChainCoinTransfer(auth, client)
if err != nil {
log.Fatal(err)
}
return addr, tx, constant.COIN_TRANSFER
}
func GetDeployOneChainCoinTransferTx(auth *bind.TransactOpts, client *ethclient.Client) (common.Address, *types.Transaction, string) {
addr, tx, _, err := coin.DeployOneChainCoinTransfer(auth, client)
if err != nil {
log.Fatal(err)
}
return addr, tx, constant.ONE_COIN_TRANSFER
}
func GetDeployTwoChainCoinTransferTx(auth *bind.TransactOpts, client *ethclient.Client) (common.Address, *types.Transaction, string) {
addr, tx, _, err := coin.DeployTwoChainCoinTransfer(auth, client)
if err != nil {
log.Fatal(err)
}
return addr, tx, constant.TWO_COIN_TRANSFER
}
func GetDeployErc721(auth *bind.TransactOpts, client *ethclient.Client) (common.Address, *types.Transaction, string) {
addr, tx, _, err := erc721.DeployERC721(auth, client, "CaduceusErc721", "META")
if err != nil {
log.Fatal(err)
}
return addr, tx, constant.ERC721
}
func GetDeployNftTokenTransfer(auth *bind.TransactOpts, client *ethclient.Client) (common.Address, *types.Transaction, string) {
addr, tx, _, err := erc721.DeployNftTokenTransfer(auth, client)
if err != nil {
log.Fatal(err)
}
return addr, tx, constant.TOKEN721_TRANSFER
}
func GetDeployOneNftTokenTransferTx(auth *bind.TransactOpts, client *ethclient.Client) (common.Address, *types.Transaction, string) {
addr, tx, _, err := erc721.DeployOneNftTokenTransfer(auth, client)
if err != nil {
log.Fatal(err)
}
return addr, tx, constant.ONE_TOKEN721_TRANSFER
}
func GetDeployTwoNftTokenTransferTx(auth *bind.TransactOpts, client *ethclient.Client) (common.Address, *types.Transaction, string) {
addr, tx, _, err := erc721.DeployTwoNftTokenTransfer(auth, client)
if err != nil {
log.Fatal(err)
}
return addr, tx, constant.TWO_TOKEN721_TRANSFER
}
func GetDeployReadWriteVarTx(auth *bind.TransactOpts, client *ethclient.Client) (common.Address, *types.Transaction, string) {
addr, tx, _, err := rw.DeployReadWriteVar(auth, client)
if err != nil {
log.Fatal(err)
}
return addr, tx, constant.READ_WRITE
}
func GetDeployOneReadWriteVarTx(auth *bind.TransactOpts, client *ethclient.Client) (common.Address, *types.Transaction, string) {
addr, tx, _, err := rw.DeployOneReadWriteVar(auth, client)
if err != nil {
log.Fatal(err)
}
return addr, tx, constant.ONE_READ_WRITE
}
func GetDeployReadWriteBlock(auth *bind.TransactOpts, client *ethclient.Client) (common.Address, *types.Transaction, string) {
addr, tx, _, err := rw.DeployReadWriteBlock(auth, client)
if err != nil {
log.Fatal(err)
}
return addr, tx, constant.READ_CHAIN
}
package contractErc20
import (
contractToken20 "contract-case/contract_abi/erc20_transfer/compile"
"contract-case/log"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"math/big"
)
type OneErc20Trade struct {
TokenTransferAddr common.Address
Erc20Addr common.Address
FromAddr common.Address
ToAddr []common.Address
Amount *big.Int
}
func (trade *OneErc20Trade) Erc20OneTransferTx(tranOpts *bind.TransactOpts, tokenTransfer *contractToken20.OneTokenTransfer) (*types.Transaction, error) {
oneTransferTx, err := tokenTransfer.OneTransfer(tranOpts, trade.TokenTransferAddr, trade.Erc20Addr, trade.ToAddr, trade.Amount)
if err != nil {
log.Errorf("Erc20OneTransferTx func oneTransfer tx error: %s", err)
return nil, err
}
log.Info("tokenTransfer:", oneTransferTx.Hash())
return oneTransferTx, nil
}
func (trade *OneErc20Trade) Erc20OneTransferFromTx(tranOpts *bind.TransactOpts, tokenTransfer *contractToken20.OneTokenTransfer) (*types.Transaction, error) {
tokenTransferFromTx, err := tokenTransfer.OneTransferFrom(tranOpts, trade.TokenTransferAddr, trade.Erc20Addr, trade.FromAddr, trade.ToAddr[0], trade.Amount)
if err != nil {
log.Errorf("Constructor TokenTransferFrom tx error: %s", err)
return nil, err
}
log.Info("tokenTransferFromTx:", tokenTransferFromTx.Hash())
return tokenTransferFromTx, nil
}
package contractErc20
import (
contractToken20 "contract-case/contract_abi/erc20_transfer/compile"
"contract-case/log"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"math/big"
)
type Erc20Trade struct {
Erc20Addr common.Address
FromAddr common.Address
ToAddr []common.Address
Amount *big.Int
}
func (trade *Erc20Trade) Erc20TransferSignTx(tranOpts *bind.TransactOpts, tokenTransfer *contractToken20.TokenTransfer) (*types.Transaction, error) {
tokenTransferTx, err := tokenTransfer.TokenTransfer(tranOpts, trade.Erc20Addr, trade.ToAddr, trade.Amount)
if err != nil {
log.Errorf("Constructor tokenTransfer tx error: %s", err)
return nil, err
}
log.Info("tokenTransfer:", tokenTransferTx.Hash())
return tokenTransferTx, nil
}
func (trade *Erc20Trade) Erc20TransferFromSignTx(tranOpts *bind.TransactOpts, tokenTransfer *contractToken20.TokenTransfer) (*types.Transaction, error) {
tokenTransferFromTx, err := tokenTransfer.TokenTransferFrom(tranOpts, trade.Erc20Addr, trade.FromAddr, trade.ToAddr[0], trade.Amount)
if err != nil {
log.Errorf("Constructor TokenTransferFrom tx error: %s", err)
return nil, err
}
log.Info("tokenTransferFromTx:", tokenTransferFromTx.Hash())
return tokenTransferFromTx, nil
}
package contractErc20
import (
contractToken20 "contract-case/contract_abi/erc20_transfer/compile"
"contract-case/log"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"math/big"
)
type TwoErc20Trade struct {
OneTokenTransferAddr common.Address
TokenTransfer common.Address
Erc20Addr common.Address
FromAddr common.Address
ToAddr []common.Address
Amount *big.Int
}
func (trade *TwoErc20Trade) Erc20TwoTransferSignTx(tranOpts *bind.TransactOpts, tokenTransfer *contractToken20.TwoTokenTransfer) (*types.Transaction, error) {
tokenTransferTx, err := tokenTransfer.TwoTransfer(tranOpts, trade.OneTokenTransferAddr, trade.TokenTransfer, trade.Erc20Addr, trade.ToAddr, trade.Amount)
if err != nil {
log.Errorf("Erc20TwoTransferSignTx func twoTransfer tx error: %s", err)
return nil, err
}
log.Info("tokenTransfer:", tokenTransferTx.Hash())
return tokenTransferTx, nil
}
func (trade *TwoErc20Trade) Erc20TwoTransferFromSignTx(tranOpts *bind.TransactOpts, tokenTransfer *contractToken20.TwoTokenTransfer) (*types.Transaction, error) {
twoTransferFromTx, err := tokenTransfer.TwoTransferFrom(tranOpts, trade.OneTokenTransferAddr, trade.TokenTransfer, trade.Erc20Addr, trade.FromAddr, trade.ToAddr[0], trade.Amount)
if err != nil {
log.Errorf("Erc20TwoTransferFromSignTx func twoTransferFrom tx error: %s", err)
return nil, err
}
log.Info("twoTransferFromTx:", twoTransferFromTx.Hash())
return twoTransferFromTx, nil
}
package contractErc721
import (
erc721 "contract-case/contract_abi/erc721_transfer/compile"
"contract-case/log"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"math/big"
)
type Erc721Trade struct {
Erc721Addr common.Address
FromAddr common.Address
ToAddr common.Address
TokenId *big.Int
}
func (trade *Erc721Trade) Erc721TransferFromSignTx(tranOpts *bind.TransactOpts, transfer *erc721.NftTokenTransfer) (*types.Transaction, error) {
transferFromTx, err := transfer.TransferFrom(tranOpts, trade.Erc721Addr, trade.FromAddr, trade.ToAddr, trade.TokenId)
if err != nil {
log.Errorf("Erc721TransferFromSignTx func TransferFrom tx error: %s", err)
return nil, err
}
log.Info("transferFromTx:", transferFromTx.Hash())
return transferFromTx, nil
}
package contractErc721
import (
erc721 "contract-case/contract_abi/erc721_transfer/compile"
"contract-case/log"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"math/big"
)
type OneErc721Trade struct {
NftTokenTransferAddr common.Address
Erc721Addr common.Address
FromAddr common.Address
ToAddr common.Address
TokenId *big.Int
}
func (trade *OneErc721Trade) Erc721OneTransferFromSignTx(tranOpts *bind.TransactOpts, transfer *erc721.OneNftTokenTransfer) (*types.Transaction, error) {
transferFromTx, err := transfer.OneTransferFrom(tranOpts, trade.NftTokenTransferAddr, trade.Erc721Addr, trade.FromAddr, trade.ToAddr, trade.TokenId)
if err != nil {
log.Errorf("Erc721OneTransferFromSignTx func OneTransferFrom tx error: %s", err)
return nil, err
}
log.Info("transferFromTx:", transferFromTx.Hash())
return transferFromTx, nil
}
package contractErc721
import (
erc721 "contract-case/contract_abi/erc721_transfer/compile"
"contract-case/log"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"math/big"
)
type TwoErc721Trade struct {
OneErc721TransferAddr common.Address
NftTokenTransferAddr common.Address
Erc721Addr common.Address
FromAddr common.Address
ToAddr common.Address
TokenId *big.Int
}
func (trade *TwoErc721Trade) Erc721TwoTransferFromSignTx(tranOpts *bind.TransactOpts, transfer erc721.TwoNftTokenTransfer) (*types.Transaction, error) {
oneTransferFromTx, err := transfer.OneTransferFrom(tranOpts, trade.OneErc721TransferAddr, trade.NftTokenTransferAddr, trade.Erc721Addr, trade.FromAddr, trade.ToAddr, trade.TokenId)
if err != nil {
log.Errorf("Erc721TwoTransferFromSignTx func OneTransferFrom tx error: %s", err)
return nil, err
}
log.Info("oneTransferFromTx:", oneTransferFromTx.Hash())
return oneTransferFromTx, nil
}
package readWrite
import (
contractReadWrite "contract-case/contract_abi/read_write/compile"
"contract-case/log"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"math/big"
)
type OneReadWriteTrade struct {
ReadWriteContract common.Address
KeyParam *big.Int
ValueParam *big.Int
StringParam string
UintParam *big.Int
ValueArrParam []*big.Int
StringArrParam []string
}
func (trade *OneReadWriteTrade) OneReadWriteSignTxPushVarMapArray(tranOpts *bind.TransactOpts, transfer contractReadWrite.OneReadWriteVar) (*types.Transaction, error) {
pushVarMapArrayTx, err := transfer.OnePushVarMapArray(tranOpts, trade.ReadWriteContract, trade.KeyParam, trade.ValueParam)
if err != nil {
log.Errorf("OneReadWriteSignTxPushVarMapArray func pushVarMapArrayTx tx error: %s", err)
return nil, err
}
log.Info("pushVarMapArrayTx:", pushVarMapArrayTx.Hash())
return pushVarMapArrayTx, nil
}
func (trade *OneReadWriteTrade) OneReadWriteSignTxPushVarStringArray(tranOpts *bind.TransactOpts, transfer contractReadWrite.OneReadWriteVar) (*types.Transaction, error) {
pushVarStringArrayTx, err := transfer.OnePushVarStringArray(tranOpts, trade.ReadWriteContract, trade.StringParam)
if err != nil {
log.Errorf("OneReadWriteSignTxPushVarStringArray func pushVarStringArrayTx tx error: %s", err)
return nil, err
}
log.Info("pushVarStringArrayTx:", pushVarStringArrayTx.Hash())
return pushVarStringArrayTx, nil
}
func (trade *OneReadWriteTrade) OneReadWriteSignTxPushVarUintArray(tranOpts *bind.TransactOpts, transfer contractReadWrite.OneReadWriteVar) (*types.Transaction, error) {
pushVarUintArrayTx, err := transfer.OnePushVarUintArray(tranOpts, trade.ReadWriteContract, trade.UintParam)
if err != nil {
log.Errorf("OneReadWriteSignTxPushVarUintArray func PushVarUintArray tx error: %s", err)
return nil, err
}
log.Info("pushVarUintArrayTx:", pushVarUintArrayTx.Hash())
return pushVarUintArrayTx, nil
}
func (trade *OneReadWriteTrade) OneReadWriteSignTxSetVarString(tranOpts *bind.TransactOpts, transfer contractReadWrite.OneReadWriteVar) (*types.Transaction, error) {
setVarStringTx, err := transfer.OneSetVarString(tranOpts, trade.ReadWriteContract, trade.StringParam)
if err != nil {
log.Errorf("OneReadWriteSignTxSetVarString func SetVarString tx error: %s", err)
return nil, err
}
log.Info("setVarStringTx:", setVarStringTx.Hash())
return setVarStringTx, nil
}
func (trade *OneReadWriteTrade) OneReadWriteSignTxSetVarMap(tranOpts *bind.TransactOpts, transfer contractReadWrite.OneReadWriteVar) (*types.Transaction, error) {
SetVarMapTx, err := transfer.OneSetVarMap(tranOpts, trade.ReadWriteContract, trade.KeyParam, trade.ValueParam)
if err != nil {
log.Errorf("OneReadWriteSignTxSetVarMap func SetVarMap tx error: %s", err)
return nil, err
}
log.Info("pushVarMapArrayTx:", SetVarMapTx.Hash())
return SetVarMapTx, nil
}
func (trade *OneReadWriteTrade) OneReadWriteSignTxSetVarMapArray(tranOpts *bind.TransactOpts, transfer contractReadWrite.OneReadWriteVar) (*types.Transaction, error) {
SetVarMapArrayTx, err := transfer.OneSetVarMapArray(tranOpts, trade.ReadWriteContract, trade.KeyParam, trade.ValueArrParam)
if err != nil {
log.Errorf("OneReadWriteSignTxSetVarMapArray func SetVarMapArray tx error: %s", err)
return nil, err
}
log.Info("SetVarMapArrayTx:", SetVarMapArrayTx.Hash())
return SetVarMapArrayTx, nil
}
func (trade *OneReadWriteTrade) OneReadWriteSignTxSetVarUint256(tranOpts *bind.TransactOpts, transfer contractReadWrite.OneReadWriteVar) (*types.Transaction, error) {
setVarUint256Tx, err := transfer.OneSetVarUint256(tranOpts, trade.ReadWriteContract, trade.UintParam)
if err != nil {
log.Errorf("OneReadWriteSignTxSetVarUint256 func SetVarUint256 tx error: %s", err)
return nil, err
}
log.Info("setVarUint256Tx:", setVarUint256Tx.Hash())
return setVarUint256Tx, nil
}
func (trade *OneReadWriteTrade) OneReadWriteSignTxSetVarStringArray(tranOpts *bind.TransactOpts, transfer contractReadWrite.OneReadWriteVar) (*types.Transaction, error) {
SetVarStringArrayTx, err := transfer.OneSetVarStringArray(tranOpts, trade.ReadWriteContract, trade.StringArrParam)
if err != nil {
log.Errorf("OneReadWriteSignTxSetVarStringArray func SetVarStringArray tx error: %s", err)
return nil, err
}
log.Info("SetVarStringArrayTx:", SetVarStringArrayTx.Hash())
return SetVarStringArrayTx, nil
}
func (trade *OneReadWriteTrade) OneReadWriteSignTxSetVarUintArray(tranOpts *bind.TransactOpts, transfer contractReadWrite.OneReadWriteVar) (*types.Transaction, error) {
SetVarUintArrayTx, err := transfer.OneSetVarUintArray(tranOpts, trade.ReadWriteContract, trade.ValueArrParam)
if err != nil {
log.Errorf("OneReadWriteSignTxSetVarUintArray func SetVarUintArray tx error: %s", err)
return nil, err
}
log.Info("SetVarUintArrayTx:", SetVarUintArrayTx.Hash())
return SetVarUintArrayTx, nil
}
package readWrite
import (
contractReadWrite "contract-case/contract_abi/read_write/compile"
"contract-case/log"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/core/types"
"math/big"
)
type ReadWriteTrade struct {
KeyParam *big.Int
ValueParam *big.Int
StringParam string
UintParam *big.Int
ValueArrParam []*big.Int
StringArrParam []string
}
func (trade *ReadWriteTrade) ReadWriteSignTxPushVarMapArray(tranOpts *bind.TransactOpts, transfer *contractReadWrite.ReadWriteVar) (*types.Transaction, error) {
pushVarMapArrayTx, err := transfer.PushVarMapArray(tranOpts, trade.KeyParam, trade.ValueParam)
if err != nil {
log.Errorf("ReadWriteSignTxPushVarMapArray func pushVarMapArrayTx tx error: %s", err)
return nil, err
}
log.Info("pushVarMapArrayTx:", pushVarMapArrayTx.Hash())
return pushVarMapArrayTx, nil
}
func (trade *ReadWriteTrade) ReadWriteSignTxPushVarStringArray(tranOpts *bind.TransactOpts, transfer *contractReadWrite.ReadWriteVar) (*types.Transaction, error) {
pushVarStringArrayTx, err := transfer.PushVarStringArray(tranOpts, trade.StringParam)
if err != nil {
log.Errorf("ReadWriteSignTxPushVarStringArray func pushVarStringArrayTx tx error: %s", err)
return nil, err
}
log.Info("pushVarStringArrayTx:", pushVarStringArrayTx.Hash())
return pushVarStringArrayTx, nil
}
func (trade *ReadWriteTrade) ReadWriteSignTxPushVarUintArray(tranOpts *bind.TransactOpts, transfer *contractReadWrite.ReadWriteVar) (*types.Transaction, error) {
pushVarUintArrayTx, err := transfer.PushVarUintArray(tranOpts, trade.UintParam)
if err != nil {
log.Errorf("ReadWriteSignTxPushVarUintArray func PushVarUintArray tx error: %s", err)
return nil, err
}
log.Info("pushVarUintArrayTx:", pushVarUintArrayTx.Hash())
return pushVarUintArrayTx, nil
}
func (trade *ReadWriteTrade) ReadWriteSignTxSetVarString(tranOpts *bind.TransactOpts, transfer *contractReadWrite.ReadWriteVar) (*types.Transaction, error) {
setVarStringTx, err := transfer.SetVarString(tranOpts, trade.StringParam)
if err != nil {
log.Errorf("ReadWriteSignTxSetVarString func SetVarString tx error: %s", err)
return nil, err
}
log.Info("setVarStringTx:", setVarStringTx.Hash())
return setVarStringTx, nil
}
func (trade *ReadWriteTrade) ReadWriteSignTxSetVarMap(tranOpts *bind.TransactOpts, transfer *contractReadWrite.ReadWriteVar) (*types.Transaction, error) {
SetVarMapTx, err := transfer.SetVarMap(tranOpts, trade.KeyParam, trade.ValueParam)
if err != nil {
log.Errorf("ReadWriteSignTxSetVarMap func SetVarMap tx error: %s", err)
return nil, err
}
log.Info("pushVarMapArrayTx:", SetVarMapTx.Hash())
return SetVarMapTx, nil
}
func (trade *ReadWriteTrade) ReadWriteSignTxSetVarMapArray(tranOpts *bind.TransactOpts, transfer *contractReadWrite.ReadWriteVar) (*types.Transaction, error) {
SetVarMapArrayTx, err := transfer.SetVarMapArray(tranOpts, trade.KeyParam, trade.ValueArrParam)
if err != nil {
log.Errorf("ReadWriteSignTxSetVarMapArray func SetVarMapArray tx error: %s", err)
return nil, err
}
log.Info("SetVarMapArrayTx:", SetVarMapArrayTx.Hash())
return SetVarMapArrayTx, nil
}
func (trade *ReadWriteTrade) ReadWriteSignTxSetVarUint256(tranOpts *bind.TransactOpts, transfer *contractReadWrite.ReadWriteVar) (*types.Transaction, error) {
setVarUint256Tx, err := transfer.SetVarUint256(tranOpts, trade.UintParam)
if err != nil {
log.Errorf("ReadWriteSignTxSetVarUint256 func SetVarUint256 tx error: %s", err)
return nil, err
}
log.Info("setVarUint256Tx:", setVarUint256Tx.Hash())
return setVarUint256Tx, nil
}
func (trade *ReadWriteTrade) ReadWriteSignTxSetVarStringArray(tranOpts *bind.TransactOpts, transfer *contractReadWrite.ReadWriteVar) (*types.Transaction, error) {
SetVarStringArrayTx, err := transfer.SetVarStringArray(tranOpts, trade.StringArrParam)
if err != nil {
log.Errorf("ReadWriteSignTxSetVarStringArray func SetVarStringArray tx error: %s", err)
return nil, err
}
log.Info("SetVarStringArrayTx:", SetVarStringArrayTx.Hash())
return SetVarStringArrayTx, nil
}
func (trade *ReadWriteTrade) ReadWriteSignTxSetVarUintArray(tranOpts *bind.TransactOpts, transfer *contractReadWrite.ReadWriteVar) (*types.Transaction, error) {
SetVarUintArrayTx, err := transfer.SetVarUintArray(tranOpts, trade.ValueArrParam)
if err != nil {
log.Errorf("ReadWriteSignTxSetVarUintArray func SetVarUintArray tx error: %s", err)
return nil, err
}
log.Info("SetVarUintArrayTx:", SetVarUintArrayTx.Hash())
return SetVarUintArrayTx, nil
}
[{"inputs":[{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"}]
\ No newline at end of file
[{"inputs":[{"internalType":"address","name":"chainCoinAddr","type":"address"},{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"oneTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"}]
\ No newline at end of file
[{"inputs":[{"internalType":"address","name":"chainCoinAddr","type":"address"},{"internalType":"address[]","name":"toArr","type":"address[]"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"oneTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"}]
\ No newline at end of file
608060405234801561001057600080fd5b50610461806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80631805040514610030575b600080fd5b61004a600480360381019061004591906102bf565b61004c565b005b8273ffffffffffffffffffffffffffffffffffffffff16631939c1ff83836040518363ffffffff1660e01b81526004016100879291906103fb565b600060405180830381600087803b1580156100a157600080fd5b505af11580156100b5573d6000803e3d6000fd5b50505050505050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006100fd826100d2565b9050919050565b61010d816100f2565b811461011857600080fd5b50565b60008135905061012a81610104565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61017e82610135565b810181811067ffffffffffffffff8211171561019d5761019c610146565b5b80604052505050565b60006101b06100be565b90506101bc8282610175565b919050565b600067ffffffffffffffff8211156101dc576101db610146565b5b602082029050602081019050919050565b600080fd5b6000610205610200846101c1565b6101a6565b90508083825260208201905060208402830185811115610228576102276101ed565b5b835b81811015610251578061023d888261011b565b84526020840193505060208101905061022a565b5050509392505050565b600082601f8301126102705761026f610130565b5b81356102808482602086016101f2565b91505092915050565b6000819050919050565b61029c81610289565b81146102a757600080fd5b50565b6000813590506102b981610293565b92915050565b6000806000606084860312156102d8576102d76100c8565b5b60006102e68682870161011b565b935050602084013567ffffffffffffffff811115610307576103066100cd565b5b6103138682870161025b565b9250506040610324868287016102aa565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b610363816100f2565b82525050565b6000610375838361035a565b60208301905092915050565b6000602082019050919050565b60006103998261032e565b6103a38185610339565b93506103ae8361034a565b8060005b838110156103df5781516103c68882610369565b97506103d183610381565b9250506001810190506103b2565b5085935050505092915050565b6103f581610289565b82525050565b60006040820190508181036000830152610415818561038e565b905061042460208301846103ec565b939250505056fea2646970667358221220a9ef4ef1aff041711f36e690b13f99c9fbf231c1d9181db88e74d68958a0eecc64736f6c63430008130033
\ No newline at end of file
[{"inputs":[{"internalType":"address","name":"oneChainCoinAddr","type":"address"},{"internalType":"address","name":"chainCoinAddr","type":"address"},{"internalType":"address[]","name":"toArr","type":"address[]"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"twoTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"}]
\ No newline at end of file
608060405234801561001057600080fd5b50610495806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80639cf3ac7614610030575b600080fd5b61004a600480360381019061004591906102c2565b61004c565b005b8373ffffffffffffffffffffffffffffffffffffffff1663180504058484846040518463ffffffff1660e01b815260040161008993929190610421565b600060405180830381600087803b1580156100a357600080fd5b505af11580156100b7573d6000803e3d6000fd5b5050505050505050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610100826100d5565b9050919050565b610110816100f5565b811461011b57600080fd5b50565b60008135905061012d81610107565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61018182610138565b810181811067ffffffffffffffff821117156101a05761019f610149565b5b80604052505050565b60006101b36100c1565b90506101bf8282610178565b919050565b600067ffffffffffffffff8211156101df576101de610149565b5b602082029050602081019050919050565b600080fd5b6000610208610203846101c4565b6101a9565b9050808382526020820190506020840283018581111561022b5761022a6101f0565b5b835b818110156102545780610240888261011e565b84526020840193505060208101905061022d565b5050509392505050565b600082601f83011261027357610272610133565b5b81356102838482602086016101f5565b91505092915050565b6000819050919050565b61029f8161028c565b81146102aa57600080fd5b50565b6000813590506102bc81610296565b92915050565b600080600080608085870312156102dc576102db6100cb565b5b60006102ea8782880161011e565b94505060206102fb8782880161011e565b935050604085013567ffffffffffffffff81111561031c5761031b6100d0565b5b6103288782880161025e565b9250506060610339878288016102ad565b91505092959194509250565b61034e816100f5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b610389816100f5565b82525050565b600061039b8383610380565b60208301905092915050565b6000602082019050919050565b60006103bf82610354565b6103c9818561035f565b93506103d483610370565b8060005b838110156104055781516103ec888261038f565b97506103f7836103a7565b9250506001810190506103d8565b5085935050505092915050565b61041b8161028c565b82525050565b60006060820190506104366000830186610345565b818103602083015261044881856103b4565b90506104576040830184610412565b94935050505056fea264697066735822122073e237c88157442f58c1369fe5ad7816641b5d9facacc7dad174b9bc3aaa045564736f6c63430008130033
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.9;
contract ChainCoinTransfer {
receive() external payable {}
function transfer(address[] memory toArr, uint256 value) external {
for (uint i = 0; i < toArr.length; i++) {
payable(toArr[i]).transfer(value);
}
}
}
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.9;
import "../../interface/IChainCoinTransfer.sol";
contract OneChainCoinTransfer {
function oneTransfer(
address chainCoinAddr,
address[] memory toArr,
uint256 value
) external {
IChainCoinTransfer(chainCoinAddr).transfer(toArr, value);
}
}
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.9;
import "../../interface/IOneChainCoinTransfer.sol";
contract TwoChainCoinTransfer {
function twoTransfer(
address oneChainCoinAddr,
address chainCoinAddr,
address[] memory toArr,
uint256 value
) external {
IOneChainCoinTransfer(oneChainCoinAddr).oneTransfer(
chainCoinAddr,
toArr,
value
);
}
}
60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122046cff3afd324baa9d02f4baa1fb29a5314647e4182dd1e829a66ea5e3a0d9cc964736f6c63430008130033
\ No newline at end of file
[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
\ No newline at end of file
This diff is collapsed.
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]
\ No newline at end of file
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]
\ No newline at end of file
[{"inputs":[{"internalType":"address","name":"tokenTransferAddr","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"oneTokenTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenTransferAddr","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"oneTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"}]
\ No newline at end of file
[{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"tokenTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"tokenTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}]
\ No newline at end of file
[{"inputs":[{"internalType":"address","name":"tokenTransferAddr","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address[]","name":"toArr","type":"address[]"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"oneTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenTransferAddr","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"oneTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}]
\ No newline at end of file
608060405234801561001057600080fd5b506105f4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063d39aee2b1461003b578063e2283c0314610057575b600080fd5b61005560048036038101906100509190610208565b610073565b005b610071600480360381019061006c91906103dc565b6100eb565b005b8473ffffffffffffffffffffffffffffffffffffffff1663f3913e69858585856040518563ffffffff1660e01b81526004016100b2949392919061047d565b600060405180830381600087803b1580156100cc57600080fd5b505af11580156100e0573d6000803e3d6000fd5b505050505050505050565b8373ffffffffffffffffffffffffffffffffffffffff1663c8ce6c788484846040518463ffffffff1660e01b815260040161012893929190610580565b600060405180830381600087803b15801561014257600080fd5b505af1158015610156573d6000803e3d6000fd5b5050505050505050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061019f82610174565b9050919050565b6101af81610194565b81146101ba57600080fd5b50565b6000813590506101cc816101a6565b92915050565b6000819050919050565b6101e5816101d2565b81146101f057600080fd5b50565b600081359050610202816101dc565b92915050565b600080600080600060a086880312156102245761022361016a565b5b6000610232888289016101bd565b9550506020610243888289016101bd565b9450506040610254888289016101bd565b9350506060610265888289016101bd565b9250506080610276888289016101f3565b9150509295509295909350565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6102d182610288565b810181811067ffffffffffffffff821117156102f0576102ef610299565b5b80604052505050565b6000610303610160565b905061030f82826102c8565b919050565b600067ffffffffffffffff82111561032f5761032e610299565b5b602082029050602081019050919050565b600080fd5b600061035861035384610314565b6102f9565b9050808382526020820190506020840283018581111561037b5761037a610340565b5b835b818110156103a4578061039088826101bd565b84526020840193505060208101905061037d565b5050509392505050565b600082601f8301126103c3576103c2610283565b5b81356103d3848260208601610345565b91505092915050565b600080600080608085870312156103f6576103f561016a565b5b6000610404878288016101bd565b9450506020610415878288016101bd565b935050604085013567ffffffffffffffff8111156104365761043561016f565b5b610442878288016103ae565b9250506060610453878288016101f3565b91505092959194509250565b61046881610194565b82525050565b610477816101d2565b82525050565b6000608082019050610492600083018761045f565b61049f602083018661045f565b6104ac604083018561045f565b6104b9606083018461046e565b95945050505050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6104f781610194565b82525050565b600061050983836104ee565b60208301905092915050565b6000602082019050919050565b600061052d826104c2565b61053781856104cd565b9350610542836104de565b8060005b8381101561057357815161055a88826104fd565b975061056583610515565b925050600181019050610546565b5085935050505092915050565b6000606082019050610595600083018661045f565b81810360208301526105a78185610522565b90506105b6604083018461046e565b94935050505056fea26469706673582212203258fa028722e747b8c8c1d701164299e665b417ab67521c6ca353c3fb2fb0cb64736f6c63430008130033
\ No newline at end of file
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
\ No newline at end of file
60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f8c9582a434933d54a2b00861b82594280596b852cfa7efbeb6af0b3a0e1133d64736f6c63430008130033
\ No newline at end of file
[{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address[]","name":"toArr","type":"address[]"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"tokenTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"tokenTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}]
\ No newline at end of file
608060405234801561001057600080fd5b50610c42806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063c8ce6c781461003b578063f3913e6914610057575b600080fd5b6100556004803603810190610050919061071e565b610073565b005b610071600480360381019061006c919061078d565b6100dd565b005b60005b82518110156100d7576100c4838281518110610095576100946107f4565b5b6020026020010151838673ffffffffffffffffffffffffffffffffffffffff166101919092919063ffffffff16565b80806100cf90610852565b915050610076565b50505050565b8373ffffffffffffffffffffffffffffffffffffffff166352ec85298484846040518463ffffffff1660e01b815260040161011a939291906108b8565b6020604051808303816000875af1158015610139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061015d9190610927565b5061018b8383838773ffffffffffffffffffffffffffffffffffffffff16610217909392919063ffffffff16565b50505050565b6102128363a9059cbb60e01b84846040516024016101b0929190610954565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506102a0565b505050565b61029a846323b872dd60e01b858585604051602401610238939291906108b8565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506102a0565b50505050565b6000610302826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166103679092919063ffffffff16565b905060008151111561036257808060200190518101906103229190610927565b610361576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035890610a00565b60405180910390fd5b5b505050565b6060610376848460008561037f565b90509392505050565b6060824710156103c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bb90610a92565b60405180910390fd5b6103cd85610493565b61040c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040390610afe565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516104359190610b8f565b60006040518083038185875af1925050503d8060008114610472576040519150601f19603f3d011682016040523d82523d6000602084013e610477565b606091505b50915091506104878282866104b6565b92505050949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b606083156104c657829050610516565b6000835111156104d95782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050d9190610bea565b60405180910390fd5b9392505050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061055c82610531565b9050919050565b61056c81610551565b811461057757600080fd5b50565b60008135905061058981610563565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6105dd82610594565b810181811067ffffffffffffffff821117156105fc576105fb6105a5565b5b80604052505050565b600061060f61051d565b905061061b82826105d4565b919050565b600067ffffffffffffffff82111561063b5761063a6105a5565b5b602082029050602081019050919050565b600080fd5b600061066461065f84610620565b610605565b905080838252602082019050602084028301858111156106875761068661064c565b5b835b818110156106b0578061069c888261057a565b845260208401935050602081019050610689565b5050509392505050565b600082601f8301126106cf576106ce61058f565b5b81356106df848260208601610651565b91505092915050565b6000819050919050565b6106fb816106e8565b811461070657600080fd5b50565b600081359050610718816106f2565b92915050565b60008060006060848603121561073757610736610527565b5b60006107458682870161057a565b935050602084013567ffffffffffffffff8111156107665761076561052c565b5b610772868287016106ba565b925050604061078386828701610709565b9150509250925092565b600080600080608085870312156107a7576107a6610527565b5b60006107b58782880161057a565b94505060206107c68782880161057a565b93505060406107d78782880161057a565b92505060606107e887828801610709565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061085d826106e8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361088f5761088e610823565b5b600182019050919050565b6108a381610551565b82525050565b6108b2816106e8565b82525050565b60006060820190506108cd600083018661089a565b6108da602083018561089a565b6108e760408301846108a9565b949350505050565b60008115159050919050565b610904816108ef565b811461090f57600080fd5b50565b600081519050610921816108fb565b92915050565b60006020828403121561093d5761093c610527565b5b600061094b84828501610912565b91505092915050565b6000604082019050610969600083018561089a565b61097660208301846108a9565b9392505050565b600082825260208201905092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b60006109ea602a8361097d565b91506109f58261098e565b604082019050919050565b60006020820190508181036000830152610a19816109dd565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b6000610a7c60268361097d565b9150610a8782610a20565b604082019050919050565b60006020820190508181036000830152610aab81610a6f565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000610ae8601d8361097d565b9150610af382610ab2565b602082019050919050565b60006020820190508181036000830152610b1781610adb565b9050919050565b600081519050919050565b600081905092915050565b60005b83811015610b52578082015181840152602081019050610b37565b60008484015250505050565b6000610b6982610b1e565b610b738185610b29565b9350610b83818560208601610b34565b80840191505092915050565b6000610b9b8284610b5e565b915081905092915050565b600081519050919050565b6000610bbc82610ba6565b610bc6818561097d565b9350610bd6818560208601610b34565b610bdf81610594565b840191505092915050565b60006020820190508181036000830152610c048184610bb1565b90509291505056fea2646970667358221220664cb0bbaca7ee0cb22ed4a9acdac832af5e72b37def9b7ede648d25d7b661d664736f6c63430008130033
\ No newline at end of file
[{"inputs":[{"internalType":"address","name":"oneTokenTransferAddr","type":"address"},{"internalType":"address","name":"tokenTransferAddr","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address[]","name":"toArr","type":"address[]"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"twoTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"oneTokenTransferAddr","type":"address"},{"internalType":"address","name":"tokenTransferAddr","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"twoTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}]
\ No newline at end of file
608060405234801561001057600080fd5b5061063c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806310d5e9721461003b578063814f5a5e14610057575b600080fd5b61005560048036038101906100509190610367565b610073565b005b610071600480360381019061006c91906103fe565b6100eb565b005b8473ffffffffffffffffffffffffffffffffffffffff1663e2283c03858585856040518563ffffffff1660e01b81526004016100b29493929190610567565b600060405180830381600087803b1580156100cc57600080fd5b505af11580156100e0573d6000803e3d6000fd5b505050505050505050565b8573ffffffffffffffffffffffffffffffffffffffff16636c8c52c286868686866040518663ffffffff1660e01b815260040161012c9594939291906105b3565b600060405180830381600087803b15801561014657600080fd5b505af115801561015a573d6000803e3d6000fd5b50505050505050505050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006101a58261017a565b9050919050565b6101b58161019a565b81146101c057600080fd5b50565b6000813590506101d2816101ac565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610226826101dd565b810181811067ffffffffffffffff82111715610245576102446101ee565b5b80604052505050565b6000610258610166565b9050610264828261021d565b919050565b600067ffffffffffffffff821115610284576102836101ee565b5b602082029050602081019050919050565b600080fd5b60006102ad6102a884610269565b61024e565b905080838252602082019050602084028301858111156102d0576102cf610295565b5b835b818110156102f957806102e588826101c3565b8452602084019350506020810190506102d2565b5050509392505050565b600082601f830112610318576103176101d8565b5b813561032884826020860161029a565b91505092915050565b6000819050919050565b61034481610331565b811461034f57600080fd5b50565b6000813590506103618161033b565b92915050565b600080600080600060a0868803121561038357610382610170565b5b6000610391888289016101c3565b95505060206103a2888289016101c3565b94505060406103b3888289016101c3565b935050606086013567ffffffffffffffff8111156103d4576103d3610175565b5b6103e088828901610303565b92505060806103f188828901610352565b9150509295509295909350565b60008060008060008060c0878903121561041b5761041a610170565b5b600061042989828a016101c3565b965050602061043a89828a016101c3565b955050604061044b89828a016101c3565b945050606061045c89828a016101c3565b935050608061046d89828a016101c3565b92505060a061047e89828a01610352565b9150509295509295509295565b6104948161019a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6104cf8161019a565b82525050565b60006104e183836104c6565b60208301905092915050565b6000602082019050919050565b60006105058261049a565b61050f81856104a5565b935061051a836104b6565b8060005b8381101561054b57815161053288826104d5565b975061053d836104ed565b92505060018101905061051e565b5085935050505092915050565b61056181610331565b82525050565b600060808201905061057c600083018761048b565b610589602083018661048b565b818103604083015261059b81856104fa565b90506105aa6060830184610558565b95945050505050565b600060a0820190506105c8600083018861048b565b6105d5602083018761048b565b6105e2604083018661048b565b6105ef606083018561048b565b6105fc6080830184610558565b969550505050505056fea264697066735822122041efa911e2697c3e77cc8cbdfa9b32896fd410ae611d70a62e88cc0cdd6ffa5964736f6c63430008130033
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;
import "../../interface/ITokenTransfer.sol";
contract OneTokenTransfer {
function oneTransfer(
address tokenTransferAddr,
address token,
address[] memory toArr,
uint256 amount
) external {
ITokenTransfer(tokenTransferAddr).tokenTransfer(token, toArr, amount);
}
function oneTransferFrom(
address tokenTransferAddr,
address token,
address from,
address to,
uint256 amount
) external {
ITokenTransfer(tokenTransferAddr).tokenTransferFrom(
token,
from,
to,
amount
);
}
}
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.9;
import "../../interface/IERC20.sol";
import "../../library/SafeERC20Token.sol";
contract TokenTransfer {
using SafeERC20Token for IERC20;
function tokenTransfer(
address token,
address[] memory toArr,
uint256 value
) external {
for (uint i = 0; i < toArr.length; i++) {
IERC20(token).safeTransfer(toArr[i], value);
}
}
function tokenTransferFrom(
address token,
address from,
address to,
uint256 value
) external {
IERC20(token).approveFrom(from, to, value);
IERC20(token).safeTransferFrom(from, to, value);
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;
import "../../interface/IOneTokenTransfer.sol";
contract TwoTokenTransfer {
function twoTransfer(
address oneTokenTransferAddr,
address tokenTransferAddr,
address token,
address[] memory toArr,
uint256 amount
) external {
IOneTokenTransfer(oneTokenTransferAddr).oneTransfer(
tokenTransferAddr,
token,
toArr,
amount
);
}
function twoTransferFrom(
address oneTokenTransferAddr,
address tokenTransferAddr,
address token,
address from,
address to,
uint256 amount
) external {
IOneTokenTransfer(oneTokenTransferAddr).oneTokenTransferFrom(
tokenTransferAddr,
token,
from,
to,
amount
);
}
}
60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122046cff3afd324baa9d02f4baa1fb29a5314647e4182dd1e829a66ea5e3a0d9cc964736f6c63430008130033
\ No newline at end of file
[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
\ No newline at end of file
[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}]
\ No newline at end of file
This diff is collapsed.
[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
\ No newline at end of file
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}]
\ No newline at end of file
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}]
\ No newline at end of file
[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"}]
\ No newline at end of file
[{"inputs":[{"internalType":"address","name":"tokenAddr","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}]
\ No newline at end of file
[{"inputs":[{"internalType":"address","name":"nftTokenTransfer","type":"address"},{"internalType":"address","name":"tokenAddr","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"oneTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}]
\ No newline at end of file
60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a0594c4660957b1f2febd1e2b92bdbb5985ed7f0e091d7fd103994534456f13f64736f6c63430008130033
\ No newline at end of file
[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddr","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}]
\ No newline at end of file
608060405234801561001057600080fd5b506103fd806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063150b7a021461003b57806315dacbea1461006b575b600080fd5b6100556004803603810190610050919061022d565b610087565b60405161006291906102f0565b60405180910390f35b6100856004803603810190610080919061030b565b6100b5565b005b60007f150b7a023d4804d13e8c85fb27262cb750cf6ba9f9dd3bb30d90f482ceeb4b1f905095945050505050565b8373ffffffffffffffffffffffffffffffffffffffff166342842e0e8484846040518463ffffffff1660e01b81526004016100f293929190610390565b600060405180830381600087803b15801561010c57600080fd5b505af1158015610120573d6000803e3d6000fd5b5050505050505050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061015f82610134565b9050919050565b61016f81610154565b811461017a57600080fd5b50565b60008135905061018c81610166565b92915050565b6000819050919050565b6101a581610192565b81146101b057600080fd5b50565b6000813590506101c28161019c565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126101ed576101ec6101c8565b5b8235905067ffffffffffffffff81111561020a576102096101cd565b5b602083019150836001820283011115610226576102256101d2565b5b9250929050565b6000806000806000608086880312156102495761024861012a565b5b60006102578882890161017d565b95505060206102688882890161017d565b9450506040610279888289016101b3565b935050606086013567ffffffffffffffff81111561029a5761029961012f565b5b6102a6888289016101d7565b92509250509295509295909350565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6102ea816102b5565b82525050565b600060208201905061030560008301846102e1565b92915050565b600080600080608085870312156103255761032461012a565b5b60006103338782880161017d565b94505060206103448782880161017d565b93505060406103558782880161017d565b9250506060610366878288016101b3565b91505092959194509250565b61037b81610154565b82525050565b61038a81610192565b82525050565b60006060820190506103a56000830186610372565b6103b26020830185610372565b6103bf6040830184610381565b94935050505056fea26469706673582212201627a740fc78a73b23519ab2f661d180ab72042122622361af6aa71305560f7364736f6c63430008130033
\ No newline at end of file
[{"inputs":[{"internalType":"address","name":"ntTokenTransfer","type":"address"},{"internalType":"address","name":"tokenAddr","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"oneTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}]
\ No newline at end of file
608060405234801561001057600080fd5b50610271806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063d39aee2b14610030575b600080fd5b61004a6004803603810190610045919061015d565b61004c565b005b8473ffffffffffffffffffffffffffffffffffffffff166315dacbea858585856040518563ffffffff1660e01b815260040161008b94939291906101f6565b600060405180830381600087803b1580156100a557600080fd5b505af11580156100b9573d6000803e3d6000fd5b505050505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006100f4826100c9565b9050919050565b610104816100e9565b811461010f57600080fd5b50565b600081359050610121816100fb565b92915050565b6000819050919050565b61013a81610127565b811461014557600080fd5b50565b60008135905061015781610131565b92915050565b600080600080600060a08688031215610179576101786100c4565b5b600061018788828901610112565b955050602061019888828901610112565b94505060406101a988828901610112565b93505060606101ba88828901610112565b92505060806101cb88828901610148565b9150509295509295909350565b6101e1816100e9565b82525050565b6101f081610127565b82525050565b600060808201905061020b60008301876101d8565b61021860208301866101d8565b61022560408301856101d8565b61023260608301846101e7565b9594505050505056fea2646970667358221220b6fbdaba9e91bdfe1827590847ea5725a7fbb505499e7906d931308f2053cbaa64736f6c63430008130033
\ No newline at end of file
60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e8c4100fd89c57beae570adf26e66ceb2950a9d2a4f8cfd7bff141efe5432f7764736f6c63430008130033
\ No newline at end of file
60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e75e608a70b340f62189e812b45bd7830553402712364262f3a78394aa8ba6eb64736f6c63430008130033
\ No newline at end of file
[{"inputs":[{"internalType":"address","name":"oneNftTokenTransfer","type":"address"},{"internalType":"address","name":"nftTokenTransfer","type":"address"},{"internalType":"address","name":"tokenAddr","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"twoTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}]
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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