forked from cerc-io/laconicd-deprecated
wrap typed data for record attributes (#70)
* unpack interface * unpackInterfaces * gofmpt * patch setRecord in WrapTxToTypedData * patch message types * hardcode record attributes * patch typed data * versioning record attributes and http post rules for rpc messages * record names
This commit is contained in:
@@ -18,6 +18,7 @@ import (
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
|
||||
|
||||
registry "github.com/cerc-io/laconicd/x/registry/types"
|
||||
"github.com/ethereum/go-ethereum/common"
|
||||
"github.com/ethereum/go-ethereum/common/math"
|
||||
"github.com/ethereum/go-ethereum/crypto"
|
||||
@@ -57,6 +58,19 @@ func WrapTxToTypedData(
|
||||
return apitypes.TypedData{}, sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, "failed to JSON unmarshal data")
|
||||
}
|
||||
|
||||
if txData["msgs"].([]interface{})[0].(map[string]interface{})["value"].(map[string]interface{})["payload"] != nil {
|
||||
setRecordMsg := msg.(*registry.MsgSetRecord)
|
||||
var attr []interface{}
|
||||
for _, b := range setRecordMsg.Payload.Record.Attributes.Value {
|
||||
attr = append(attr, fmt.Sprintf("%v", b))
|
||||
}
|
||||
|
||||
txData["msgs"].([]interface{})[0].(map[string]interface{})["value"].(map[string]interface{})["payload"].(map[string]interface{})["record"].(map[string]interface{})["attributes"] = map[string]interface{}{
|
||||
"type_url": setRecordMsg.Payload.Record.Attributes.TypeUrl,
|
||||
"value": attr,
|
||||
}
|
||||
}
|
||||
|
||||
domain := apitypes.TypedDataDomain{
|
||||
Name: "Cosmos Web3",
|
||||
Version: "1.0.0",
|
||||
@@ -70,6 +84,24 @@ func WrapTxToTypedData(
|
||||
return apitypes.TypedData{}, err
|
||||
}
|
||||
|
||||
if msgTypes["TypePayloadRecord"] != nil {
|
||||
msgTypes["TypePayloadRecord"] = []apitypes.Type{
|
||||
{Name: "id", Type: "string"},
|
||||
{Name: "bond_id", Type: "string"},
|
||||
{Name: "create_time", Type: "string"},
|
||||
{Name: "expiry_time", Type: "string"},
|
||||
{Name: "deleted", Type: "bool"},
|
||||
{Name: "attributes", Type: "TypePayloadRecordAttributes"},
|
||||
}
|
||||
}
|
||||
if msgTypes["TypePayloadRecordAttributes"] != nil {
|
||||
msgTypes["TypePayloadRecordAttributes"] = []apitypes.Type{
|
||||
{Name: "type_url", Type: "string"},
|
||||
{Name: "value", Type: "uint8[]"},
|
||||
}
|
||||
delete(msgTypes, "TypePayloadRecordAttributesValue")
|
||||
}
|
||||
|
||||
if feeDelegation != nil {
|
||||
feeInfo, ok := txData["fee"].(map[string]interface{})
|
||||
if !ok {
|
||||
|
||||
Reference in New Issue
Block a user