HIP-993: Improve record stream legibility and extensibility #992
Replies: 1 comment 1 reply
-
Hi @tinker-michaelj , overall the HIP-993 looks good to me. I have some of doubts about features #2 (Unified child consensus times) and # 6 (Use natural order for preceding dispatch records). In general, do those updates change the values on the record files? In particular, does #2 imply changes in the Also, does # 6 imply changes in field values (the Can you clarify in the HIP the systems/components (consensus nodes, mirror nodes, explorers, etc.) impacted by each of the six proposed changes? |
Beta Was this translation helpful? Give feedback.
-
This idea aggregates several small changes that each improve the legibility of the record stream, or make it more extensible in preparation for future versions of the node software.
CryptoCreate
stream item.CONSENSUS_GAS_EXHAUSTED
status in the first child transaction that is throttled inside a contract operation.ContractUpdate
finalizing a hollow account as a contract.FileCreate
operations.1️⃣ At present, when the network automatically creates an account as a side effect of a
CryptoTransfer
sending assets to an unused account alias, it "squashes" the fees for the implicitCryptoCreate
into the record of theCryptoTransfer
instead of being itemized in the preceding auto-creation record.For example, take this
CryptoTransfer
from HashScan. ItstransactionFee
is given as$0.0474
, even though$0.0473
of that amount was actually charged for the work done in the preceding child here.We propose the network instead itemize the auto-creation fees in the preceding child record. That is, instead of externalizing the two record excerpts below,
The network should externalize,
2️⃣ At present, when a child transaction is dispatched inside a contract operation, a synthetic consensus time "planned" for the child transaction is exposed to the logic handling the dispatch. This has no visible effect for any type of child transaction except a non-fungible
TokenMint
. In this case, an NFT minted by the child transaction will have itscreation_time
set to the synthetic time of the child dispatch instead of the consensus time of its parent contract operation.There is no value or significance in using a consensus time different from the parent operation, and leaking a "planned" synthetic consensus time makes it much more complicated to defer the final choice until the end of the transaction (which is a much more flexible approach that would remove artificial limits on the number of child transactions).
We propose that NFTs minted by child
TokenMint
transactions now have ascreation_time
the consensus time of their parent contract operation.3️⃣ At present, if a contract operation dispatches more child transactions than are allowed by the network throttles, it will run to completion before being rolled back with a
CONSENUS_GAS_EXHAUSTED
failure code. There is no benefit to this approach, as it does work that will not be committed to state; and can make the reason for the failure less obvious.We propose that child transactions are throttled at the point of dispatch, and the first throttled transaction fail with a
CONSENSUS_GAS_EXHAUSTED
status.4️⃣ At present, the synthetic
ContractUpdate
externalized when a hollow account is finalized as a contract via collision with aCREATE1
orCREATE2
address has fields set that imply it inherits properties such as auto-renew account from thesender
address. This does not actually happen, so the synthetic transaction is misleading.We propose removing these unused fields.
5️⃣ At present, when a pre-prod environment starts a network from genesis, any mirror node in that environment will not automatically get the contents of the initial system files (
0.0.101
,0.0.102
,0.0.111
,0.0.112
,0.0.121
,0.0.122
,0.0.123
). This is in contrast to the initial system accounts, which are externalized via syntheticCryptoCreate
transactions added as preceding children of the first handled user transaction.We propose to externalize the initial system files as additional preceding children with synthetic
FileCreate
transactions.Beta Was this translation helpful? Give feedback.
All reactions