Skip to content

Commit 2bfec06

Browse files
authored
Contract code hash nil (#404)
* push on master and release branch staging tags * make contract code hash null for history operations
1 parent 6e2e345 commit 2bfec06

2 files changed

Lines changed: 26 additions & 54 deletions

File tree

internal/transform/operation.go

Lines changed: 12 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1082,7 +1082,7 @@ func extractOperationDetails(operation xdr.Operation, transaction ingest.LedgerT
10821082
transactionEnvelope := getTransactionV1Envelope(transaction.Envelope)
10831083
details["ledger_key_hash"] = ledgerKeyHashFromTxEnvelope(transactionEnvelope)
10841084
details["contract_id"] = contractId
1085-
details["contract_code_hash"] = contractCodeHashFromTxEnvelope(transactionEnvelope)
1085+
details["contract_code_hash"] = nil
10861086

10871087
details["parameters"], details["parameters_decoded"] = serializeParameters(args)
10881088
details["parameters_json"], details["parameters_json_decoded"], err = serializeScValArray(args)
@@ -1103,7 +1103,7 @@ func extractOperationDetails(operation xdr.Operation, transaction ingest.LedgerT
11031103
transactionEnvelope := getTransactionV1Envelope(transaction.Envelope)
11041104
details["ledger_key_hash"] = ledgerKeyHashFromTxEnvelope(transactionEnvelope)
11051105
details["contract_id"] = contractIdFromTxEnvelope(transactionEnvelope)
1106-
details["contract_code_hash"] = contractCodeHashFromTxEnvelope(transactionEnvelope)
1106+
details["contract_code_hash"] = nil
11071107

11081108
preimageTypeMap := switchContractIdPreimageType(args.ContractIdPreimage)
11091109
for key, val := range preimageTypeMap {
@@ -1115,7 +1115,7 @@ func extractOperationDetails(operation xdr.Operation, transaction ingest.LedgerT
11151115
details["type"] = "upload_wasm"
11161116
transactionEnvelope := getTransactionV1Envelope(transaction.Envelope)
11171117
details["ledger_key_hash"] = ledgerKeyHashFromTxEnvelope(transactionEnvelope)
1118-
details["contract_code_hash"] = contractCodeHashFromTxEnvelope(transactionEnvelope)
1118+
details["contract_code_hash"] = nil
11191119
case xdr.HostFunctionTypeHostFunctionTypeCreateContractV2:
11201120
var err error
11211121
args := op.HostFunction.MustCreateContractV2()
@@ -1124,7 +1124,7 @@ func extractOperationDetails(operation xdr.Operation, transaction ingest.LedgerT
11241124
transactionEnvelope := getTransactionV1Envelope(transaction.Envelope)
11251125
details["ledger_key_hash"] = ledgerKeyHashFromTxEnvelope(transactionEnvelope)
11261126
details["contract_id"] = contractIdFromTxEnvelope(transactionEnvelope)
1127-
details["contract_code_hash"] = contractCodeHashFromTxEnvelope(transactionEnvelope)
1127+
details["contract_code_hash"] = nil
11281128

11291129
details["parameters"], details["parameters_decoded"] = serializeParameters(args.ConstructorArgs)
11301130
details["parameters_json"], details["parameters_json_decoded"], err = serializeScValArray(args.ConstructorArgs)
@@ -1149,14 +1149,14 @@ func extractOperationDetails(operation xdr.Operation, transaction ingest.LedgerT
11491149
transactionEnvelope := getTransactionV1Envelope(transaction.Envelope)
11501150
details["ledger_key_hash"] = ledgerKeyHashFromTxEnvelope(transactionEnvelope)
11511151
details["contract_id"] = contractIdFromTxEnvelope(transactionEnvelope)
1152-
details["contract_code_hash"] = contractCodeHashFromTxEnvelope(transactionEnvelope)
1152+
details["contract_code_hash"] = nil
11531153
case xdr.OperationTypeRestoreFootprint:
11541154
details["type"] = "restore_footprint"
11551155

11561156
transactionEnvelope := getTransactionV1Envelope(transaction.Envelope)
11571157
details["ledger_key_hash"] = ledgerKeyHashFromTxEnvelope(transactionEnvelope)
11581158
details["contract_id"] = contractIdFromTxEnvelope(transactionEnvelope)
1159-
details["contract_code_hash"] = contractCodeHashFromTxEnvelope(transactionEnvelope)
1159+
details["contract_code_hash"] = nil
11601160
default:
11611161
return details, fmt.Errorf("unknown operation type: %s", operation.Body.Type.String())
11621162
}
@@ -1704,7 +1704,7 @@ func (operation *transactionOperationWrapper) Details() (map[string]interface{},
17041704
transactionEnvelope := getTransactionV1Envelope(operation.transaction.Envelope)
17051705
details["ledger_key_hash"] = ledgerKeyHashFromTxEnvelope(transactionEnvelope)
17061706
details["contract_id"] = contractId
1707-
details["contract_code_hash"] = contractCodeHashFromTxEnvelope(transactionEnvelope)
1707+
details["contract_code_hash"] = nil
17081708

17091709
details["parameters"], details["parameters_decoded"] = serializeParameters(args)
17101710
details["parameters_json"], details["parameters_json_decoded"], err = serializeScValArray(args)
@@ -1725,7 +1725,7 @@ func (operation *transactionOperationWrapper) Details() (map[string]interface{},
17251725
transactionEnvelope := getTransactionV1Envelope(operation.transaction.Envelope)
17261726
details["ledger_key_hash"] = ledgerKeyHashFromTxEnvelope(transactionEnvelope)
17271727
details["contract_id"] = contractIdFromTxEnvelope(transactionEnvelope)
1728-
details["contract_code_hash"] = contractCodeHashFromTxEnvelope(transactionEnvelope)
1728+
details["contract_code_hash"] = nil
17291729

17301730
preimageTypeMap := switchContractIdPreimageType(args.ContractIdPreimage)
17311731
for key, val := range preimageTypeMap {
@@ -1737,7 +1737,7 @@ func (operation *transactionOperationWrapper) Details() (map[string]interface{},
17371737
details["type"] = "upload_wasm"
17381738
transactionEnvelope := getTransactionV1Envelope(operation.transaction.Envelope)
17391739
details["ledger_key_hash"] = ledgerKeyHashFromTxEnvelope(transactionEnvelope)
1740-
details["contract_code_hash"] = contractCodeHashFromTxEnvelope(transactionEnvelope)
1740+
details["contract_code_hash"] = nil
17411741
case xdr.HostFunctionTypeHostFunctionTypeCreateContractV2:
17421742
var err error
17431743
args := op.HostFunction.MustCreateContractV2()
@@ -1746,7 +1746,7 @@ func (operation *transactionOperationWrapper) Details() (map[string]interface{},
17461746
transactionEnvelope := getTransactionV1Envelope(operation.transaction.Envelope)
17471747
details["ledger_key_hash"] = ledgerKeyHashFromTxEnvelope(transactionEnvelope)
17481748
details["contract_id"] = contractIdFromTxEnvelope(transactionEnvelope)
1749-
details["contract_code_hash"] = contractCodeHashFromTxEnvelope(transactionEnvelope)
1749+
details["contract_code_hash"] = nil
17501750

17511751
details["parameters"], details["parameters_decoded"] = serializeParameters(args.ConstructorArgs)
17521752
details["parameters_json"], details["parameters_json_decoded"], err = serializeScValArray(args.ConstructorArgs)
@@ -1771,14 +1771,14 @@ func (operation *transactionOperationWrapper) Details() (map[string]interface{},
17711771
transactionEnvelope := getTransactionV1Envelope(operation.transaction.Envelope)
17721772
details["ledger_key_hash"] = ledgerKeyHashFromTxEnvelope(transactionEnvelope)
17731773
details["contract_id"] = contractIdFromTxEnvelope(transactionEnvelope)
1774-
details["contract_code_hash"] = contractCodeHashFromTxEnvelope(transactionEnvelope)
1774+
details["contract_code_hash"] = nil
17751775
case xdr.OperationTypeRestoreFootprint:
17761776
details["type"] = "restore_footprint"
17771777

17781778
transactionEnvelope := getTransactionV1Envelope(operation.transaction.Envelope)
17791779
details["ledger_key_hash"] = ledgerKeyHashFromTxEnvelope(transactionEnvelope)
17801780
details["contract_id"] = contractIdFromTxEnvelope(transactionEnvelope)
1781-
details["contract_code_hash"] = contractCodeHashFromTxEnvelope(transactionEnvelope)
1781+
details["contract_code_hash"] = nil
17821782
default:
17831783
panic(fmt.Errorf("unknown operation type: %s", operation.OperationType()))
17841784
}
@@ -1838,24 +1838,6 @@ func contractIdFromContractData(ledgerKey xdr.LedgerKey) string {
18381838
return contractId
18391839
}
18401840

1841-
func contractCodeHashFromTxEnvelope(transactionEnvelope xdr.TransactionV1Envelope) string {
1842-
for _, ledgerKey := range transactionEnvelope.Tx.Ext.SorobanData.Resources.Footprint.ReadOnly {
1843-
contractCode := contractCodeFromContractData(ledgerKey)
1844-
if contractCode != "" {
1845-
return contractCode
1846-
}
1847-
}
1848-
1849-
for _, ledgerKey := range transactionEnvelope.Tx.Ext.SorobanData.Resources.Footprint.ReadWrite {
1850-
contractCode := contractCodeFromContractData(ledgerKey)
1851-
if contractCode != "" {
1852-
return contractCode
1853-
}
1854-
}
1855-
1856-
return ""
1857-
}
1858-
18591841
func ledgerKeyHashFromTxEnvelope(transactionEnvelope xdr.TransactionV1Envelope) []string {
18601842
var ledgerKeyHash []string
18611843
for _, ledgerKey := range transactionEnvelope.Tx.Ext.SorobanData.Resources.Footprint.ReadOnly {
@@ -1873,16 +1855,6 @@ func ledgerKeyHashFromTxEnvelope(transactionEnvelope xdr.TransactionV1Envelope)
18731855
return ledgerKeyHash
18741856
}
18751857

1876-
func contractCodeFromContractData(ledgerKey xdr.LedgerKey) string {
1877-
contractCode, ok := ledgerKey.GetContractCode()
1878-
if !ok {
1879-
return ""
1880-
}
1881-
1882-
contractCodeHash := contractCode.Hash.HexString()
1883-
return contractCodeHash
1884-
}
1885-
18861858
func filterEvents(diagnosticEvents []xdr.DiagnosticEvent) []xdr.ContractEvent {
18871859
var filtered []xdr.ContractEvent
18881860
for _, diagnosticEvent := range diagnosticEvents {

internal/transform/operation_test.go

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1854,7 +1854,7 @@ func makeOperationTestOutputs() (transformedOperations []OperationOutput) {
18541854
"function": "HostFunctionTypeHostFunctionTypeInvokeContract",
18551855
"type": "invoke_contract",
18561856
"contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSC4",
1857-
"contract_code_hash": "",
1857+
"contract_code_hash": nil,
18581858
"asset_balance_changes": []map[string]interface{}{},
18591859
"ledger_key_hash": nilStringArray,
18601860
"parameters": []map[string]string{
@@ -1897,7 +1897,7 @@ func makeOperationTestOutputs() (transformedOperations []OperationOutput) {
18971897
"function": "HostFunctionTypeHostFunctionTypeInvokeContract",
18981898
"type": "invoke_contract",
18991899
"contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSC4",
1900-
"contract_code_hash": "",
1900+
"contract_code_hash": nil,
19011901
"asset_balance_changes": []map[string]interface{}{},
19021902
"ledger_key_hash": nilStringArray,
19031903
"parameters": []map[string]string{
@@ -1944,7 +1944,7 @@ func makeOperationTestOutputs() (transformedOperations []OperationOutput) {
19441944
"function": "HostFunctionTypeHostFunctionTypeCreateContract",
19451945
"type": "create_contract",
19461946
"contract_id": "",
1947-
"contract_code_hash": "",
1947+
"contract_code_hash": nil,
19481948
"from": "address",
19491949
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSC4",
19501950
"ledger_key_hash": nilStringArray,
@@ -1956,7 +1956,7 @@ func makeOperationTestOutputs() (transformedOperations []OperationOutput) {
19561956
"function": "HostFunctionTypeHostFunctionTypeCreateContract",
19571957
"type": "create_contract",
19581958
"contract_id": "",
1959-
"contract_code_hash": "",
1959+
"contract_code_hash": nil,
19601960
"from": "address",
19611961
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSC4",
19621962
"ledger_key_hash": nilStringArray,
@@ -1972,7 +1972,7 @@ func makeOperationTestOutputs() (transformedOperations []OperationOutput) {
19721972
"function": "HostFunctionTypeHostFunctionTypeCreateContract",
19731973
"type": "create_contract",
19741974
"contract_id": "",
1975-
"contract_code_hash": "",
1975+
"contract_code_hash": nil,
19761976
"from": "asset",
19771977
"asset": ":GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF",
19781978
"ledger_key_hash": nilStringArray,
@@ -1984,7 +1984,7 @@ func makeOperationTestOutputs() (transformedOperations []OperationOutput) {
19841984
"function": "HostFunctionTypeHostFunctionTypeCreateContract",
19851985
"type": "create_contract",
19861986
"contract_id": "",
1987-
"contract_code_hash": "",
1987+
"contract_code_hash": nil,
19881988
"from": "asset",
19891989
"asset": ":GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF",
19901990
"ledger_key_hash": nilStringArray,
@@ -2000,7 +2000,7 @@ func makeOperationTestOutputs() (transformedOperations []OperationOutput) {
20002000
"function": "HostFunctionTypeHostFunctionTypeCreateContractV2",
20012001
"type": "create_contract_v2",
20022002
"contract_id": "",
2003-
"contract_code_hash": "",
2003+
"contract_code_hash": nil,
20042004
"from": "asset",
20052005
"asset": ":GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF",
20062006
"ledger_key_hash": nilStringArray,
@@ -2028,7 +2028,7 @@ func makeOperationTestOutputs() (transformedOperations []OperationOutput) {
20282028
"function": "HostFunctionTypeHostFunctionTypeCreateContractV2",
20292029
"type": "create_contract_v2",
20302030
"contract_id": "",
2031-
"contract_code_hash": "",
2031+
"contract_code_hash": nil,
20322032
"from": "asset",
20332033
"asset": ":GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF",
20342034
"ledger_key_hash": nilStringArray,
@@ -2059,7 +2059,7 @@ func makeOperationTestOutputs() (transformedOperations []OperationOutput) {
20592059
OperationDetails: map[string]interface{}{
20602060
"function": "HostFunctionTypeHostFunctionTypeUploadContractWasm",
20612061
"type": "upload_wasm",
2062-
"contract_code_hash": "",
2062+
"contract_code_hash": nil,
20632063
"ledger_key_hash": nilStringArray,
20642064
},
20652065
ClosedAt: hardCodedLedgerClose,
@@ -2068,7 +2068,7 @@ func makeOperationTestOutputs() (transformedOperations []OperationOutput) {
20682068
OperationDetailsJSON: map[string]interface{}{
20692069
"function": "HostFunctionTypeHostFunctionTypeUploadContractWasm",
20702070
"type": "upload_wasm",
2071-
"contract_code_hash": "",
2071+
"contract_code_hash": nil,
20722072
"ledger_key_hash": nilStringArray,
20732073
},
20742074
},
@@ -2082,7 +2082,7 @@ func makeOperationTestOutputs() (transformedOperations []OperationOutput) {
20822082
"type": "extend_footprint_ttl",
20832083
"extend_to": xdr.Uint32(1234),
20842084
"contract_id": "",
2085-
"contract_code_hash": "",
2085+
"contract_code_hash": nil,
20862086
"ledger_key_hash": nilStringArray,
20872087
},
20882088
ClosedAt: hardCodedLedgerClose,
@@ -2092,7 +2092,7 @@ func makeOperationTestOutputs() (transformedOperations []OperationOutput) {
20922092
"type": "extend_footprint_ttl",
20932093
"extend_to": xdr.Uint32(1234),
20942094
"contract_id": "",
2095-
"contract_code_hash": "",
2095+
"contract_code_hash": nil,
20962096
"ledger_key_hash": nilStringArray,
20972097
},
20982098
},
@@ -2105,7 +2105,7 @@ func makeOperationTestOutputs() (transformedOperations []OperationOutput) {
21052105
OperationDetails: map[string]interface{}{
21062106
"type": "restore_footprint",
21072107
"contract_id": "",
2108-
"contract_code_hash": "",
2108+
"contract_code_hash": nil,
21092109
"ledger_key_hash": nilStringArray,
21102110
},
21112111
ClosedAt: hardCodedLedgerClose,
@@ -2114,7 +2114,7 @@ func makeOperationTestOutputs() (transformedOperations []OperationOutput) {
21142114
OperationDetailsJSON: map[string]interface{}{
21152115
"type": "restore_footprint",
21162116
"contract_id": "",
2117-
"contract_code_hash": "",
2117+
"contract_code_hash": nil,
21182118
"ledger_key_hash": nilStringArray,
21192119
},
21202120
},

0 commit comments

Comments
 (0)