7个钱包生成一个多签账号(命令行或者代码生成),至少需要5个人签名才能使用(7个人之中选择)
多签账号(A............S),10亿
-1- Ontology-go-sdk -> MultiSignToTransaction
-2- 10亿转到自己钱包
-3- 通过自己钱包进行一次转账(还是转到自己账户,智能合约会自动生成ong)
-4- 通过unboundong/withdrawong进行提取合约当中生成的ong(一万个ont给与4个ong,ong用于支付交易手续费)
package Mul
import (
"fmt"
"github.com/ontio/ontology-crypto/keypair"
ont "github.com/ontio/ontology-go-sdk"
"github.com/ontio/ontology/common"
"github.com/ontio/ontology/core/types"
ont2 "github.com/ontio/ontology/smartcontract/service/native/ont"
"strconv"
"time"
)
var (
OntSdk *ont.OntologySdk
Passwd = []byte("1107")
GasPrice = uint64(0)
GasLimit = uint64(30000)
//Addr1 *ont.Account
addr1,_= common.AddressFromBase58("ATFBjDmoyvj7HcUMMJ7VfGiE8WupGypT2i")
//addr2,_= common.AddressFromBase58("APCWAUjgRmu1eLEc651GacsvKzTTfEUVhd")
//addr3,_= common.AddressFromBase58("AbPC4dEbLK9Py7jxrMwVaY3cfC2DGcsXuY")
//addr4,_= common.AddressFromBase58("ASpmYbwXhu1s1zC6FYwmrAVnPp5ZmjpCmJ")
//addr5,_= common.AddressFromBase58("AKDjhL8LU5sjd3jFQbNQSkXCz9f2cavSog")
//addr6,_= common.AddressFromBase58("AL5GixTHMGdn4iS2FMsULYq3R5c7WZy617")
//addr7,_= common.AddressFromBase58("AXExefyGAFrrZvJwZ85rwuixhFr5pkTmaa")
Wallet []ont.Wallet
Acc *ont.Account
MulKey = make([]keypair.PublicKey,0)
acc = make([]*ont.Account,0)
MulSigAddr common.Address
)
func Getbanlance(){
OntSdk = ont.NewOntologySdk()
OntSdk.NewRpcClient().SetAddress("http://127.0.0.1:10339")
balance1,_ := OntSdk.Native.Ont.BalanceOf(addr1)
fmt.Print(balance1)
}
func GetTx() {
for a := 1; a < 8; a++ {
B := "/Users/onchain/Desktop/ontology-"
A := "/wallet.dat"
C := strconv.Itoa(a)
Path := B +C+ A
wallet, err := ont.OpenWallet(Path)
if err != nil {
fmt.Printf("account.Open error:%s\n", err)
return
}
Acc, err = wallet.GetDefaultAccount(Passwd)
if err != nil {
fmt.Printf("GetDefaultAccount error:%s\n", err)
return
}
MulKey = append(MulKey,Acc.PublicKey)
acc = append(acc,Acc)
}
fmt.Print(MulKey)
MulSigAddr, _ = types.AddressFromMultiPubKeys(MulKey, 5)
fmt.Print(MulSigAddr)
balance,_ := OntSdk.Native.Ont.BalanceOf(MulSigAddr)
fmt.Print(balance)
States := []*ont2.State {{MulSigAddr,addr1,1000000000}}
tx, _ := OntSdk.Native.Ont.NewMultiTransferTransaction(GasPrice,GasLimit,States)
for _, Acc = range acc {
err := OntSdk.MultiSignToTransaction(tx,5, MulKey, Acc)
fmt.Print(err)
}
data,err:= OntSdk.SendTransaction(tx)
fmt.Print(data,err)
}
func GetBAS(){
time.After(6)
//balance1,_ := OntSdk.Native.Ont.BalanceOf(addr1)
balance1,_ := OntSdk.Native.Ont.BalanceOf(addr1)
fmt.Print(balance1)
}