forked from TrueCloudLab/frostfs-contract
[#50] Drop notaryless deploy parameter
Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
This commit is contained in:
parent
09281e3ef3
commit
6e9c770142
16 changed files with 53 additions and 117 deletions
|
@ -18,8 +18,6 @@ const (
|
||||||
indexKey = "index"
|
indexKey = "index"
|
||||||
totalKey = "threshold"
|
totalKey = "threshold"
|
||||||
nameKey = "name"
|
nameKey = "name"
|
||||||
|
|
||||||
notaryDisabledKey = "notary"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// OnNEP17Payment is a callback for NEP-17 compatible native GAS and NEO
|
// OnNEP17Payment is a callback for NEP-17 compatible native GAS and NEO
|
||||||
|
@ -34,8 +32,6 @@ func OnNEP17Payment(from interop.Hash160, amount int, data interface{}) {
|
||||||
func _deploy(data interface{}, isUpdate bool) {
|
func _deploy(data interface{}, isUpdate bool) {
|
||||||
ctx := storage.GetContext()
|
ctx := storage.GetContext()
|
||||||
|
|
||||||
common.RmAndCheckNotaryDisabledKey(data, notaryDisabledKey)
|
|
||||||
|
|
||||||
if isUpdate {
|
if isUpdate {
|
||||||
args := data.([]interface{})
|
args := data.([]interface{})
|
||||||
common.CheckVersion(args[len(args)-1].(int))
|
common.CheckVersion(args[len(args)-1].(int))
|
||||||
|
@ -43,13 +39,11 @@ func _deploy(data interface{}, isUpdate bool) {
|
||||||
}
|
}
|
||||||
|
|
||||||
args := data.(struct {
|
args := data.(struct {
|
||||||
//TODO(@acid-ant): #9 remove notaryDisabled in future version
|
addrNetmap interop.Hash160
|
||||||
notaryDisabled bool
|
addrProxy interop.Hash160
|
||||||
addrNetmap interop.Hash160
|
name string
|
||||||
addrProxy interop.Hash160
|
index int
|
||||||
name string
|
total int
|
||||||
index int
|
|
||||||
total int
|
|
||||||
})
|
})
|
||||||
|
|
||||||
if len(args.addrNetmap) != interop.Hash160Len || len(args.addrProxy) != interop.Hash160Len {
|
if len(args.addrNetmap) != interop.Hash160Len || len(args.addrProxy) != interop.Hash160Len {
|
||||||
|
|
|
@ -37,15 +37,11 @@ func (a auditHeader) ID() []byte {
|
||||||
|
|
||||||
const (
|
const (
|
||||||
netmapContractKey = "netmapScriptHash"
|
netmapContractKey = "netmapScriptHash"
|
||||||
|
|
||||||
notaryDisabledKey = "notary"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func _deploy(data interface{}, isUpdate bool) {
|
func _deploy(data interface{}, isUpdate bool) {
|
||||||
ctx := storage.GetContext()
|
ctx := storage.GetContext()
|
||||||
|
|
||||||
common.RmAndCheckNotaryDisabledKey(data, notaryDisabledKey)
|
|
||||||
|
|
||||||
if isUpdate {
|
if isUpdate {
|
||||||
args := data.([]interface{})
|
args := data.([]interface{})
|
||||||
common.CheckVersion(args[len(args)-1].(int))
|
common.CheckVersion(args[len(args)-1].(int))
|
||||||
|
@ -53,9 +49,7 @@ func _deploy(data interface{}, isUpdate bool) {
|
||||||
}
|
}
|
||||||
|
|
||||||
args := data.(struct {
|
args := data.(struct {
|
||||||
//TODO(@acid-ant): #9 remove notaryDisabled in future version
|
addrNetmap interop.Hash160
|
||||||
notaryDisabled bool
|
|
||||||
addrNetmap interop.Hash160
|
|
||||||
})
|
})
|
||||||
|
|
||||||
if len(args.addrNetmap) != interop.Hash160Len {
|
if len(args.addrNetmap) != interop.Hash160Len {
|
||||||
|
|
|
@ -47,7 +47,6 @@ const (
|
||||||
|
|
||||||
netmapContractKey = "netmapScriptHash"
|
netmapContractKey = "netmapScriptHash"
|
||||||
containerContractKey = "containerScriptHash"
|
containerContractKey = "containerScriptHash"
|
||||||
notaryDisabledKey = "notary"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var token Token
|
var token Token
|
||||||
|
@ -67,8 +66,6 @@ func init() {
|
||||||
func _deploy(data interface{}, isUpdate bool) {
|
func _deploy(data interface{}, isUpdate bool) {
|
||||||
ctx := storage.GetContext()
|
ctx := storage.GetContext()
|
||||||
|
|
||||||
common.RmAndCheckNotaryDisabledKey(data, notaryDisabledKey)
|
|
||||||
|
|
||||||
if isUpdate {
|
if isUpdate {
|
||||||
args := data.([]interface{})
|
args := data.([]interface{})
|
||||||
common.CheckVersion(args[len(args)-1].(int))
|
common.CheckVersion(args[len(args)-1].(int))
|
||||||
|
@ -76,10 +73,8 @@ func _deploy(data interface{}, isUpdate bool) {
|
||||||
}
|
}
|
||||||
|
|
||||||
args := data.(struct {
|
args := data.(struct {
|
||||||
// TODO(@acid-ant): #9 remove notaryDisabled in future version
|
addrNetmap interop.Hash160
|
||||||
notaryDisabled bool
|
addrContainer interop.Hash160
|
||||||
addrNetmap interop.Hash160
|
|
||||||
addrContainer interop.Hash160
|
|
||||||
})
|
})
|
||||||
|
|
||||||
if len(args.addrNetmap) != interop.Hash160Len || len(args.addrContainer) != interop.Hash160Len {
|
if len(args.addrNetmap) != interop.Hash160Len || len(args.addrContainer) != interop.Hash160Len {
|
||||||
|
|
|
@ -1,26 +1,11 @@
|
||||||
package common
|
package common
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/nspcc-dev/neo-go/pkg/interop/storage"
|
|
||||||
"github.com/nspcc-dev/neo-go/pkg/interop/util"
|
"github.com/nspcc-dev/neo-go/pkg/interop/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
|
||||||
panicMsgForNotaryDisabledEnv = "contract not applicable for notary-disabled environment"
|
|
||||||
)
|
|
||||||
|
|
||||||
// BytesEqual compares two slices of bytes by wrapping them into strings,
|
// BytesEqual compares two slices of bytes by wrapping them into strings,
|
||||||
// which is necessary with new util.Equals interop behaviour, see neo-go#1176.
|
// which is necessary with new util.Equals interop behaviour, see neo-go#1176.
|
||||||
func BytesEqual(a []byte, b []byte) bool {
|
func BytesEqual(a []byte, b []byte) bool {
|
||||||
return util.Equals(string(a), string(b))
|
return util.Equals(string(a), string(b))
|
||||||
}
|
}
|
||||||
|
|
||||||
// RmAndCheckNotaryDisabledKey remove notary disabled key from storage and
|
|
||||||
// panic in notary disabled environment
|
|
||||||
func RmAndCheckNotaryDisabledKey(data interface{}, key interface{}) {
|
|
||||||
//TODO(@acid-ant): #9 remove notaryDisabled from args in future version
|
|
||||||
storage.Delete(storage.GetContext(), key)
|
|
||||||
if data.([]interface{})[0].(bool) {
|
|
||||||
panic(panicMsgForNotaryDisabledEnv)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -50,7 +50,6 @@ const (
|
||||||
nnsContractKey = "nnsScriptHash"
|
nnsContractKey = "nnsScriptHash"
|
||||||
nnsRootKey = "nnsRoot"
|
nnsRootKey = "nnsRoot"
|
||||||
nnsHasAliasKey = "nnsHasAlias"
|
nnsHasAliasKey = "nnsHasAlias"
|
||||||
notaryDisabledKey = "notary"
|
|
||||||
|
|
||||||
// RegistrationFeeKey is a key in netmap config which contains fee for container registration.
|
// RegistrationFeeKey is a key in netmap config which contains fee for container registration.
|
||||||
RegistrationFeeKey = "ContainerFee"
|
RegistrationFeeKey = "ContainerFee"
|
||||||
|
@ -94,8 +93,6 @@ func OnNEP11Payment(a interop.Hash160, b int, c []byte, d interface{}) {
|
||||||
func _deploy(data interface{}, isUpdate bool) {
|
func _deploy(data interface{}, isUpdate bool) {
|
||||||
ctx := storage.GetContext()
|
ctx := storage.GetContext()
|
||||||
|
|
||||||
common.RmAndCheckNotaryDisabledKey(data, notaryDisabledKey)
|
|
||||||
|
|
||||||
if isUpdate {
|
if isUpdate {
|
||||||
args := data.([]interface{})
|
args := data.([]interface{})
|
||||||
common.CheckVersion(args[len(args)-1].(int))
|
common.CheckVersion(args[len(args)-1].(int))
|
||||||
|
@ -123,13 +120,11 @@ func _deploy(data interface{}, isUpdate bool) {
|
||||||
}
|
}
|
||||||
|
|
||||||
args := data.(struct {
|
args := data.(struct {
|
||||||
//TODO(@acid-ant): #9 remove notaryDisabled in future version
|
addrNetmap interop.Hash160
|
||||||
notaryDisabled bool
|
addrBalance interop.Hash160
|
||||||
addrNetmap interop.Hash160
|
addrID interop.Hash160
|
||||||
addrBalance interop.Hash160
|
addrNNS interop.Hash160
|
||||||
addrID interop.Hash160
|
nnsRoot string
|
||||||
addrNNS interop.Hash160
|
|
||||||
nnsRoot string
|
|
||||||
})
|
})
|
||||||
|
|
||||||
if len(args.addrNetmap) != interop.Hash160Len ||
|
if len(args.addrNetmap) != interop.Hash160Len ||
|
||||||
|
|
|
@ -26,9 +26,8 @@ const (
|
||||||
CandidateFeeConfigKey = "InnerRingCandidateFee"
|
CandidateFeeConfigKey = "InnerRingCandidateFee"
|
||||||
withdrawFeeConfigKey = "WithdrawFee"
|
withdrawFeeConfigKey = "WithdrawFee"
|
||||||
|
|
||||||
alphabetKey = "alphabet"
|
alphabetKey = "alphabet"
|
||||||
candidatesKey = "candidates"
|
candidatesKey = "candidates"
|
||||||
notaryDisabledKey = "notary"
|
|
||||||
|
|
||||||
processingContractKey = "processingScriptHash"
|
processingContractKey = "processingScriptHash"
|
||||||
|
|
||||||
|
@ -47,8 +46,6 @@ var (
|
||||||
func _deploy(data interface{}, isUpdate bool) {
|
func _deploy(data interface{}, isUpdate bool) {
|
||||||
ctx := storage.GetContext()
|
ctx := storage.GetContext()
|
||||||
|
|
||||||
common.RmAndCheckNotaryDisabledKey(data, notaryDisabledKey)
|
|
||||||
|
|
||||||
if isUpdate {
|
if isUpdate {
|
||||||
args := data.([]interface{})
|
args := data.([]interface{})
|
||||||
common.CheckVersion(args[len(args)-1].(int))
|
common.CheckVersion(args[len(args)-1].(int))
|
||||||
|
@ -56,11 +53,9 @@ func _deploy(data interface{}, isUpdate bool) {
|
||||||
}
|
}
|
||||||
|
|
||||||
args := data.(struct {
|
args := data.(struct {
|
||||||
//TODO(@acid-ant): #9 remove notaryDisabled in future version
|
addrProc interop.Hash160
|
||||||
notaryDisabled bool
|
keys []interop.PublicKey
|
||||||
addrProc interop.Hash160
|
config [][]byte
|
||||||
keys []interop.PublicKey
|
|
||||||
config [][]byte
|
|
||||||
})
|
})
|
||||||
|
|
||||||
if len(args.keys) == 0 {
|
if len(args.keys) == 0 {
|
||||||
|
|
|
@ -22,15 +22,12 @@ const (
|
||||||
const (
|
const (
|
||||||
netmapContractKey = "netmapScriptHash"
|
netmapContractKey = "netmapScriptHash"
|
||||||
containerContractKey = "containerScriptHash"
|
containerContractKey = "containerScriptHash"
|
||||||
notaryDisabledKey = "notary"
|
|
||||||
ownerKeysPrefix = 'o'
|
ownerKeysPrefix = 'o'
|
||||||
)
|
)
|
||||||
|
|
||||||
func _deploy(data interface{}, isUpdate bool) {
|
func _deploy(data interface{}, isUpdate bool) {
|
||||||
ctx := storage.GetContext()
|
ctx := storage.GetContext()
|
||||||
|
|
||||||
common.RmAndCheckNotaryDisabledKey(data, notaryDisabledKey)
|
|
||||||
|
|
||||||
if isUpdate {
|
if isUpdate {
|
||||||
args := data.([]interface{})
|
args := data.([]interface{})
|
||||||
common.CheckVersion(args[len(args)-1].(int))
|
common.CheckVersion(args[len(args)-1].(int))
|
||||||
|
@ -38,10 +35,8 @@ func _deploy(data interface{}, isUpdate bool) {
|
||||||
}
|
}
|
||||||
|
|
||||||
args := data.(struct {
|
args := data.(struct {
|
||||||
//TODO(@acid-ant): #9 remove notaryDisabled in future version
|
addrNetmap interop.Hash160
|
||||||
notaryDisabled bool
|
addrContainer interop.Hash160
|
||||||
addrNetmap interop.Hash160
|
|
||||||
addrContainer interop.Hash160
|
|
||||||
})
|
})
|
||||||
|
|
||||||
if len(args.addrNetmap) != interop.Hash160Len || len(args.addrContainer) != interop.Hash160Len {
|
if len(args.addrNetmap) != interop.Hash160Len || len(args.addrContainer) != interop.Hash160Len {
|
||||||
|
|
|
@ -43,8 +43,7 @@ type Node struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
notaryDisabledKey = "notary"
|
innerRingKey = "innerring"
|
||||||
innerRingKey = "innerring"
|
|
||||||
|
|
||||||
// DefaultSnapshotCount contains the number of previous snapshots stored by this contract.
|
// DefaultSnapshotCount contains the number of previous snapshots stored by this contract.
|
||||||
// Must be less than 255.
|
// Must be less than 255.
|
||||||
|
@ -70,16 +69,12 @@ var (
|
||||||
func _deploy(data interface{}, isUpdate bool) {
|
func _deploy(data interface{}, isUpdate bool) {
|
||||||
ctx := storage.GetContext()
|
ctx := storage.GetContext()
|
||||||
|
|
||||||
common.RmAndCheckNotaryDisabledKey(data, notaryDisabledKey)
|
|
||||||
|
|
||||||
var args = data.(struct {
|
var args = data.(struct {
|
||||||
//TODO(@acid-ant): #9 remove notaryDisabled in future version
|
addrBalance interop.Hash160
|
||||||
notaryDisabled bool
|
addrContainer interop.Hash160
|
||||||
addrBalance interop.Hash160
|
keys []interop.PublicKey
|
||||||
addrContainer interop.Hash160
|
config [][]byte
|
||||||
keys []interop.PublicKey
|
version int
|
||||||
config [][]byte
|
|
||||||
version int
|
|
||||||
})
|
})
|
||||||
|
|
||||||
ln := len(args.config)
|
ln := len(args.config)
|
||||||
|
|
|
@ -10,14 +10,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
notaryDisabledKey = "notary"
|
|
||||||
reputationValuePrefix = 'r'
|
reputationValuePrefix = 'r'
|
||||||
reputationCountPrefix = 'c'
|
reputationCountPrefix = 'c'
|
||||||
)
|
)
|
||||||
|
|
||||||
func _deploy(data interface{}, isUpdate bool) {
|
func _deploy(data interface{}, isUpdate bool) {
|
||||||
common.RmAndCheckNotaryDisabledKey(data, notaryDisabledKey)
|
|
||||||
|
|
||||||
if isUpdate {
|
if isUpdate {
|
||||||
args := data.([]interface{})
|
args := data.([]interface{})
|
||||||
common.CheckVersion(args[len(args)-1].(int))
|
common.CheckVersion(args[len(args)-1].(int))
|
||||||
|
|
|
@ -21,13 +21,12 @@ const alphabetPath = "../alphabet"
|
||||||
func deployAlphabetContract(t *testing.T, e *neotest.Executor, addrNetmap, addrProxy util.Uint160, name string, index, total int64) util.Uint160 {
|
func deployAlphabetContract(t *testing.T, e *neotest.Executor, addrNetmap, addrProxy util.Uint160, name string, index, total int64) util.Uint160 {
|
||||||
c := neotest.CompileFile(t, e.CommitteeHash, alphabetPath, path.Join(alphabetPath, "config.yml"))
|
c := neotest.CompileFile(t, e.CommitteeHash, alphabetPath, path.Join(alphabetPath, "config.yml"))
|
||||||
|
|
||||||
args := make([]interface{}, 6)
|
args := make([]interface{}, 5)
|
||||||
args[0] = false
|
args[0] = addrNetmap
|
||||||
args[1] = addrNetmap
|
args[1] = addrProxy
|
||||||
args[2] = addrProxy
|
args[2] = name
|
||||||
args[3] = name
|
args[3] = index
|
||||||
args[4] = index
|
args[4] = total
|
||||||
args[5] = total
|
|
||||||
|
|
||||||
e.DeployContract(t, c, args)
|
e.DeployContract(t, c, args)
|
||||||
return c.Hash
|
return c.Hash
|
||||||
|
|
|
@ -15,9 +15,8 @@ func deployBalanceContract(t *testing.T, e *neotest.Executor, addrNetmap, addrCo
|
||||||
c := neotest.CompileFile(t, e.CommitteeHash, balancePath, path.Join(balancePath, "config.yml"))
|
c := neotest.CompileFile(t, e.CommitteeHash, balancePath, path.Join(balancePath, "config.yml"))
|
||||||
|
|
||||||
args := make([]interface{}, 3)
|
args := make([]interface{}, 3)
|
||||||
args[0] = false
|
args[0] = addrNetmap
|
||||||
args[1] = addrNetmap
|
args[1] = addrContainer
|
||||||
args[2] = addrContainer
|
|
||||||
|
|
||||||
e.DeployContract(t, c, args)
|
e.DeployContract(t, c, args)
|
||||||
return c.Hash
|
return c.Hash
|
||||||
|
|
|
@ -29,13 +29,12 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
func deployContainerContract(t *testing.T, e *neotest.Executor, addrNetmap, addrBalance, addrNNS util.Uint160) util.Uint160 {
|
func deployContainerContract(t *testing.T, e *neotest.Executor, addrNetmap, addrBalance, addrNNS util.Uint160) util.Uint160 {
|
||||||
args := make([]interface{}, 6)
|
args := make([]interface{}, 5)
|
||||||
args[0] = int64(0)
|
args[0] = addrNetmap
|
||||||
args[1] = addrNetmap
|
args[1] = addrBalance
|
||||||
args[2] = addrBalance
|
args[2] = util.Uint160{} // not needed for now
|
||||||
args[3] = util.Uint160{} // not needed for now
|
args[3] = addrNNS
|
||||||
args[4] = addrNNS
|
args[4] = "frostfs"
|
||||||
args[5] = "frostfs"
|
|
||||||
|
|
||||||
c := neotest.CompileFile(t, e.CommitteeHash, containerPath, path.Join(containerPath, "config.yml"))
|
c := neotest.CompileFile(t, e.CommitteeHash, containerPath, path.Join(containerPath, "config.yml"))
|
||||||
e.DeployContract(t, c, args)
|
e.DeployContract(t, c, args)
|
||||||
|
|
|
@ -22,16 +22,15 @@ const frostfsPath = "../frostfs"
|
||||||
|
|
||||||
func deployFrostFSContract(t *testing.T, e *neotest.Executor, addrProc util.Uint160,
|
func deployFrostFSContract(t *testing.T, e *neotest.Executor, addrProc util.Uint160,
|
||||||
pubs keys.PublicKeys, config ...interface{}) util.Uint160 {
|
pubs keys.PublicKeys, config ...interface{}) util.Uint160 {
|
||||||
args := make([]interface{}, 5)
|
args := make([]interface{}, 3)
|
||||||
args[0] = false
|
args[0] = addrProc
|
||||||
args[1] = addrProc
|
|
||||||
|
|
||||||
arr := make([]interface{}, len(pubs))
|
arr := make([]interface{}, len(pubs))
|
||||||
for i := range pubs {
|
for i := range pubs {
|
||||||
arr[i] = pubs[i].Bytes()
|
arr[i] = pubs[i].Bytes()
|
||||||
}
|
}
|
||||||
args[2] = arr
|
args[1] = arr
|
||||||
args[3] = append([]interface{}{}, config...)
|
args[2] = append([]interface{}{}, config...)
|
||||||
|
|
||||||
c := neotest.CompileFile(t, e.CommitteeHash, frostfsPath, path.Join(frostfsPath, "config.yml"))
|
c := neotest.CompileFile(t, e.CommitteeHash, frostfsPath, path.Join(frostfsPath, "config.yml"))
|
||||||
e.DeployContract(t, c, args)
|
e.DeployContract(t, c, args)
|
||||||
|
|
|
@ -17,10 +17,9 @@ import (
|
||||||
const frostfsidPath = "../frostfsid"
|
const frostfsidPath = "../frostfsid"
|
||||||
|
|
||||||
func deployFrostFSIDContract(t *testing.T, e *neotest.Executor, addrNetmap, addrContainer util.Uint160) util.Uint160 {
|
func deployFrostFSIDContract(t *testing.T, e *neotest.Executor, addrNetmap, addrContainer util.Uint160) util.Uint160 {
|
||||||
args := make([]interface{}, 5)
|
args := make([]interface{}, 2)
|
||||||
args[0] = false
|
args[0] = addrNetmap
|
||||||
args[1] = addrNetmap
|
args[1] = addrContainer
|
||||||
args[2] = addrContainer
|
|
||||||
|
|
||||||
c := neotest.CompileFile(t, e.CommitteeHash, frostfsidPath, path.Join(frostfsidPath, "config.yml"))
|
c := neotest.CompileFile(t, e.CommitteeHash, frostfsidPath, path.Join(frostfsidPath, "config.yml"))
|
||||||
e.DeployContract(t, c, args)
|
e.DeployContract(t, c, args)
|
||||||
|
|
|
@ -24,12 +24,11 @@ func deployNetmapContract(t *testing.T, e *neotest.Executor, addrBalance, addrCo
|
||||||
_, pubs, ok := vm.ParseMultiSigContract(e.Committee.Script())
|
_, pubs, ok := vm.ParseMultiSigContract(e.Committee.Script())
|
||||||
require.True(t, ok)
|
require.True(t, ok)
|
||||||
|
|
||||||
args := make([]interface{}, 5)
|
args := make([]interface{}, 4)
|
||||||
args[0] = false
|
args[0] = addrBalance
|
||||||
args[1] = addrBalance
|
args[1] = addrContainer
|
||||||
args[2] = addrContainer
|
args[2] = []interface{}{pubs[0]}
|
||||||
args[3] = []interface{}{pubs[0]}
|
args[3] = append([]interface{}{}, config...)
|
||||||
args[4] = append([]interface{}{}, config...)
|
|
||||||
|
|
||||||
c := neotest.CompileFile(t, e.CommitteeHash, netmapPath, path.Join(netmapPath, "config.yml"))
|
c := neotest.CompileFile(t, e.CommitteeHash, netmapPath, path.Join(netmapPath, "config.yml"))
|
||||||
e.DeployContract(t, c, args)
|
e.DeployContract(t, c, args)
|
||||||
|
|
|
@ -16,10 +16,7 @@ func deployReputationContract(t *testing.T, e *neotest.Executor) util.Uint160 {
|
||||||
c := neotest.CompileFile(t, e.CommitteeHash, reputationPath,
|
c := neotest.CompileFile(t, e.CommitteeHash, reputationPath,
|
||||||
path.Join(reputationPath, "config.yml"))
|
path.Join(reputationPath, "config.yml"))
|
||||||
|
|
||||||
args := make([]interface{}, 1)
|
e.DeployContract(t, c, []interface{}{})
|
||||||
args[0] = false
|
|
||||||
|
|
||||||
e.DeployContract(t, c, args)
|
|
||||||
return c.Hash
|
return c.Hash
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue