diff --git a/chain/types/tipset.go b/chain/types/tipset.go index 9d9e12f57..c1aa90fc9 100644 --- a/chain/types/tipset.go +++ b/chain/types/tipset.go @@ -202,6 +202,10 @@ func (ts *TipSet) MinTimestamp() uint64 { blks := ts.Blocks() + // TODO::FVM @vyzo @magik Null rounds shouldn't ever be represented as + // tipsets with no blocks; Null-round generally means that the tipset at + // that epoch doesn't exist - and the next tipset that does exist links + // straight to first epoch with blocks (@raulk agrees -- this is odd) if len(blks) == 0 { // null rounds make things crash -- it is threaded in every fvm instantiation return 0 diff --git a/chain/vm/invoker.go b/chain/vm/invoker.go index 648c91c39..47bd2e326 100644 --- a/chain/vm/invoker.go +++ b/chain/vm/invoker.go @@ -291,7 +291,7 @@ func DumpActorState(i *ActorRegistry, act *types.Actor, b []byte) (interface{}, um := actInfo.vmActor.State() if um == nil { - // TODO: I would like to assert that we have the empty object here + // TODO::FVM @arajasek I would like to assert that we have the empty object here return nil, nil } if err := um.UnmarshalCBOR(bytes.NewReader(b)); err != nil { diff --git a/itests/eth_deploy_test.go b/itests/eth_deploy_test.go index 266db2abb..13a68ce46 100644 --- a/itests/eth_deploy_test.go +++ b/itests/eth_deploy_test.go @@ -26,7 +26,7 @@ import ( // TestDeployment smoke tests the deployment of a contract via the // Ethereum JSON-RPC endpoint, from an EEOA. func TestDeployment(t *testing.T) { - // TODO the contract installation and invocation can be lifted into utility methods + // TODO::FVM @raulk the contract installation and invocation can be lifted into utility methods // He who writes the second test, shall do that. // kit.QuietMiningLogs() @@ -104,6 +104,8 @@ func TestDeployment(t *testing.T) { require.Equal(t, hash, mpoolTx.Hash) // these fields should be nil because the tx hasn't landed on chain. + // TODO::FVM @raulk We can either skip the assertion if the msg has already + // landed, or pause mining between the embryo creation and this assertion. require.Nil(t, mpoolTx.BlockNumber) require.Nil(t, mpoolTx.BlockHash) require.Nil(t, mpoolTx.TransactionIndex) @@ -115,6 +117,9 @@ func TestDeployment(t *testing.T) { var receipt *api.EthTxReceipt for i := 0; i < 20; i++ { + // TODO::FVM @raulk The right time to exit this loop isn't after + // 20 iterations, but when StateWaitMsg returns -- let's wait on that + // event while continuing to make this assertion receipt, err = client.EthGetTransactionReceipt(ctx, hash) if err != nil || receipt == nil { time.Sleep(500 * time.Millisecond)