新注册的用户请输入邮箱并保存,随后登录邮箱激活账号。后续可直接使用邮箱登录!

Commit 30ccae1f authored by Devin Zeng's avatar Devin Zeng 👽

add InitNewNativeContract function

parent 3a4d2e32
...@@ -66,6 +66,8 @@ func registerContractManagerMethods(log protocol.Logger) map[string]common.Contr ...@@ -66,6 +66,8 @@ func registerContractManagerMethods(log protocol.Logger) map[string]common.Contr
runtime.verifyContractAccess) runtime.verifyContractAccess)
methodMap[syscontract.ContractQueryFunction_GET_DISABLED_CONTRACT_LIST.String()] = common.WrapResultFunc( methodMap[syscontract.ContractQueryFunction_GET_DISABLED_CONTRACT_LIST.String()] = common.WrapResultFunc(
runtime.getDisabledContractList) runtime.getDisabledContractList)
methodMap[syscontract.ContractManageFunction_INIT_NEW_NATIVE_CONTRACT.String()] = common.WrapResultFunc(
runtime.InitNewNativeContract)
return methodMap return methodMap
...@@ -594,3 +596,40 @@ func (r *ContractManagerRuntime) changeContractStatus(context protocol.TxSimCont ...@@ -594,3 +596,40 @@ func (r *ContractManagerRuntime) changeContractStatus(context protocol.TxSimCont
} }
return contract, nil return contract, nil
} }
func (r *ContractManagerRuntime) InitNewNativeContract(txSimContext protocol.TxSimContext, _ map[string][]byte) (
[]byte, error) {
contracts, err := r.GetAllContracts(txSimContext)
if err != nil {
return nil, err
}
existNativeContracts := make(map[string]bool)
for _, contract := range contracts {
if contract.RuntimeType == commonPb.RuntimeType_NATIVE {
existNativeContracts[contract.Name] = true
}
}
var returnContracts []*commonPb.Contract
for cname := range syscontract.SystemContract_value {
_, exist := existNativeContracts[cname]
if !exist {
contract := &commonPb.Contract{
Name: cname,
Version: "v1",
RuntimeType: commonPb.RuntimeType_NATIVE,
Status: commonPb.ContractStatus_NORMAL,
Creator: nil,
}
key := utils.GetContractDbKey(cname)
value, _ := contract.Marshal()
err = txSimContext.Put(ContractName, key, value)
if err != nil {
return nil, err
}
r.log.Infof("init native contract success[name:%s version:%s runtimeType:%d]",
contract.Name, contract.Version, contract.RuntimeType)
returnContracts = append(returnContracts, contract)
}
}
return json.Marshal(returnContracts)
}
...@@ -255,3 +255,18 @@ func (m Mb) Verify(hashType string, msg []byte, sig []byte) error { ...@@ -255,3 +255,18 @@ func (m Mb) Verify(hashType string, msg []byte, sig []byte) error {
func (m Mb) GetMember() (*pbac.Member, error) { func (m Mb) GetMember() (*pbac.Member, error) {
panic("implement me") panic("implement me")
} }
func TestContractManagerRuntime_InitNewNativeContract(t *testing.T) {
ctrl := gomock.NewController(t)
txSimContext := mock.NewMockTxSimContext(ctrl)
defer ctrl.Finish()
contract := &commonPb.Contract{Name: "CHAIN_CONFIG", Version: "v1", RuntimeType: commonPb.RuntimeType_NATIVE, Status: commonPb.ContractStatus_NORMAL}
list := &ListIter{list: []*commonPb.Contract{contract}}
txSimContext.EXPECT().Select(gomock.Any(), gomock.Any(), gomock.Any()).Return(list, nil).AnyTimes()
txSimContext.EXPECT().Put(gomock.Any(), gomock.Any(), gomock.Any()).AnyTimes()
runtime := &ContractManagerRuntime{log: &test.GoLogger{}}
result, err := runtime.InitNewNativeContract(txSimContext, initParameters())
assert.Nil(t, err)
t.Log(string(result))
assert.NotContains(t, string(result), "CHAIN_CONFIG")
}
...@@ -7,7 +7,7 @@ require ( ...@@ -7,7 +7,7 @@ require (
chainmaker.org/chainmaker/common/v2 v2.1.2-0.20220118101118-f256fc9c55e6 chainmaker.org/chainmaker/common/v2 v2.1.2-0.20220118101118-f256fc9c55e6
chainmaker.org/chainmaker/localconf/v2 v2.1.1-0.20220112085516-908b8478be8f chainmaker.org/chainmaker/localconf/v2 v2.1.1-0.20220112085516-908b8478be8f
chainmaker.org/chainmaker/logger/v2 v2.1.1-0.20211214124250-621f11b35ab0 chainmaker.org/chainmaker/logger/v2 v2.1.1-0.20211214124250-621f11b35ab0
chainmaker.org/chainmaker/pb-go/v2 v2.1.1-0.20220119062501-d1b3a201f7fb chainmaker.org/chainmaker/pb-go/v2 v2.1.1-0.20220214071858-6aaf92e86f04
chainmaker.org/chainmaker/protocol/v2 v2.1.2-0.20220113081648-bbf6c1946b59 chainmaker.org/chainmaker/protocol/v2 v2.1.2-0.20220113081648-bbf6c1946b59
chainmaker.org/chainmaker/utils/v2 v2.1.1-0.20220114120415-8e1af1e262a7 chainmaker.org/chainmaker/utils/v2 v2.1.1-0.20220114120415-8e1af1e262a7
github.com/gogo/protobuf v1.3.2 github.com/gogo/protobuf v1.3.2
......
...@@ -13,6 +13,8 @@ chainmaker.org/chainmaker/pb-go/v2 v2.1.1-0.20220110032709-5947499a1a6d/go.mod h ...@@ -13,6 +13,8 @@ chainmaker.org/chainmaker/pb-go/v2 v2.1.1-0.20220110032709-5947499a1a6d/go.mod h
chainmaker.org/chainmaker/pb-go/v2 v2.1.1-0.20220111065457-38aa34ce86a3/go.mod h1:b5fg5e93xCjSHU1b5yk/mnslab+z7N08kMkNVDoSpcI= chainmaker.org/chainmaker/pb-go/v2 v2.1.1-0.20220111065457-38aa34ce86a3/go.mod h1:b5fg5e93xCjSHU1b5yk/mnslab+z7N08kMkNVDoSpcI=
chainmaker.org/chainmaker/pb-go/v2 v2.1.1-0.20220119062501-d1b3a201f7fb h1:HmLJvvtUyRmiDc8rCtLdentg0alEXCRgtZB+WSqYs+4= chainmaker.org/chainmaker/pb-go/v2 v2.1.1-0.20220119062501-d1b3a201f7fb h1:HmLJvvtUyRmiDc8rCtLdentg0alEXCRgtZB+WSqYs+4=
chainmaker.org/chainmaker/pb-go/v2 v2.1.1-0.20220119062501-d1b3a201f7fb/go.mod h1:b5fg5e93xCjSHU1b5yk/mnslab+z7N08kMkNVDoSpcI= chainmaker.org/chainmaker/pb-go/v2 v2.1.1-0.20220119062501-d1b3a201f7fb/go.mod h1:b5fg5e93xCjSHU1b5yk/mnslab+z7N08kMkNVDoSpcI=
chainmaker.org/chainmaker/pb-go/v2 v2.1.1-0.20220214071858-6aaf92e86f04 h1:OLttQm33khJS+uFhomYEert2YHmtJVR5F8vYn9Tz3vI=
chainmaker.org/chainmaker/pb-go/v2 v2.1.1-0.20220214071858-6aaf92e86f04/go.mod h1:b5fg5e93xCjSHU1b5yk/mnslab+z7N08kMkNVDoSpcI=
chainmaker.org/chainmaker/protocol/v2 v2.1.2-0.20220110033503-d6b4e5a065d9/go.mod h1:7VlxwX9MHyHpfAFw7OW+y7hUqawbp/GZKLeQlRDVZdk= chainmaker.org/chainmaker/protocol/v2 v2.1.2-0.20220110033503-d6b4e5a065d9/go.mod h1:7VlxwX9MHyHpfAFw7OW+y7hUqawbp/GZKLeQlRDVZdk=
chainmaker.org/chainmaker/protocol/v2 v2.1.2-0.20220113081648-bbf6c1946b59 h1:SR3GsTur2WAsDllkmAWCxFtcWjzVWG9DIWDsYWnzfYs= chainmaker.org/chainmaker/protocol/v2 v2.1.2-0.20220113081648-bbf6c1946b59 h1:SR3GsTur2WAsDllkmAWCxFtcWjzVWG9DIWDsYWnzfYs=
chainmaker.org/chainmaker/protocol/v2 v2.1.2-0.20220113081648-bbf6c1946b59/go.mod h1:SYkMoufkVVj4wI1JOU/YpV4Re4Z2i1WXgk+sn0ulWDk= chainmaker.org/chainmaker/protocol/v2 v2.1.2-0.20220113081648-bbf6c1946b59/go.mod h1:SYkMoufkVVj4wI1JOU/YpV4Re4Z2i1WXgk+sn0ulWDk=
......
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