Skip to content

Commit

Permalink
make createcontract better
Browse files Browse the repository at this point in the history
  • Loading branch information
chowbao committed Feb 6, 2025
1 parent cc6d49d commit 0258c83
Showing 1 changed file with 28 additions and 39 deletions.
67 changes: 28 additions & 39 deletions ingest/invoke_host_function_details.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,30 +70,13 @@ func (o *LedgerOperation) InvokeHostFunctionDetails() (InvokeHostFunctionDetail,
args := op.HostFunction.MustCreateContract()

invokeHostFunctionDetail.Type = "create_contract"
invokeHostFunctionDetail.LedgerKeyHash = o.Transaction.LedgerKeyHashFromTxEnvelope()

var contractID string
contractID, ok = o.Transaction.contractIdFromTxEnvelope()
if ok {
invokeHostFunctionDetail.ContractID = contractID
}

var contractCodeHash string
contractCodeHash, ok = o.Transaction.ContractCodeHashFromTxEnvelope()
if ok {
invokeHostFunctionDetail.ContractCodeHash = contractCodeHash
}

preImageDetails, err := switchContractIdPreimageType(args.ContractIdPreimage)
if err != nil {
return InvokeHostFunctionDetail{}, nil
}

invokeHostFunctionDetail.From = preImageDetails.From
invokeHostFunctionDetail.Address = preImageDetails.Address
invokeHostFunctionDetail.AssetCode = preImageDetails.AssetCode
invokeHostFunctionDetail.AssetIssuer = preImageDetails.AssetIssuer
invokeHostFunctionDetail.AssetType = preImageDetails.AssetType
o.getCreateContractDetails(&invokeHostFunctionDetail, preImageDetails)
case xdr.HostFunctionTypeHostFunctionTypeUploadContractWasm:
invokeHostFunctionDetail.Type = "upload_wasm"
invokeHostFunctionDetail.LedgerKeyHash = o.Transaction.LedgerKeyHashFromTxEnvelope()
Expand All @@ -107,38 +90,44 @@ func (o *LedgerOperation) InvokeHostFunctionDetails() (InvokeHostFunctionDetail,
args := op.HostFunction.MustCreateContractV2()

invokeHostFunctionDetail.Type = "create_contract_v2"
invokeHostFunctionDetail.LedgerKeyHash = o.Transaction.LedgerKeyHashFromTxEnvelope()

var contractID string
contractID, ok = o.Transaction.contractIdFromTxEnvelope()
if ok {
invokeHostFunctionDetail.ContractID = contractID
preImageDetails, err := switchContractIdPreimageType(args.ContractIdPreimage)
if err != nil {
return InvokeHostFunctionDetail{}, err
}

var contractCodeHash string
contractCodeHash, ok = o.Transaction.ContractCodeHashFromTxEnvelope()
if ok {
invokeHostFunctionDetail.ContractCodeHash = contractCodeHash
}
o.getCreateContractDetails(&invokeHostFunctionDetail, preImageDetails)

// ConstructorArgs is a list of ScVals
// This will initially be handled the same as InvokeContractParams until a different
// model is found necessary.
invokeHostFunctionDetail.Parameters, invokeHostFunctionDetail.ParametersDecoded = o.serializeParameters(args.ConstructorArgs)

preImageDetails, err := switchContractIdPreimageType(args.ContractIdPreimage)
if err != nil {
return InvokeHostFunctionDetail{}, nil
}

invokeHostFunctionDetail.From = preImageDetails.From
invokeHostFunctionDetail.Address = preImageDetails.Address
invokeHostFunctionDetail.AssetCode = preImageDetails.AssetCode
invokeHostFunctionDetail.AssetIssuer = preImageDetails.AssetIssuer
invokeHostFunctionDetail.AssetType = preImageDetails.AssetType
default:
return InvokeHostFunctionDetail{}, fmt.Errorf("unknown host function type: %s", op.HostFunction.Type)
}

return invokeHostFunctionDetail, nil
}

func (o *LedgerOperation) getCreateContractDetails(invokeHostFunctionDetail *InvokeHostFunctionDetail, preImageDetails PreImageDetails) {
var ok bool
invokeHostFunctionDetail.LedgerKeyHash = o.Transaction.LedgerKeyHashFromTxEnvelope()

var contractID string
contractID, ok = o.Transaction.contractIdFromTxEnvelope()
if ok {
invokeHostFunctionDetail.ContractID = contractID
}

var contractCodeHash string
contractCodeHash, ok = o.Transaction.ContractCodeHashFromTxEnvelope()
if ok {
invokeHostFunctionDetail.ContractCodeHash = contractCodeHash
}

invokeHostFunctionDetail.From = preImageDetails.From
invokeHostFunctionDetail.Address = preImageDetails.Address
invokeHostFunctionDetail.AssetCode = preImageDetails.AssetCode
invokeHostFunctionDetail.AssetIssuer = preImageDetails.AssetIssuer
invokeHostFunctionDetail.AssetType = preImageDetails.AssetType
}

0 comments on commit 0258c83

Please sign in to comment.