Commit 443c7d1f authored by Karl Floersch's avatar Karl Floersch

WIP: fix weird bug

parent 29f92bed
...@@ -69,7 +69,7 @@ contract OVM_CanonicalTransactionChain is iOVM_CanonicalTransactionChain, OVM_Ba ...@@ -69,7 +69,7 @@ contract OVM_CanonicalTransactionChain is iOVM_CanonicalTransactionChain, OVM_Ba
forceInclusionPeriodSeconds = _forceInclusionPeriodSeconds; forceInclusionPeriodSeconds = _forceInclusionPeriodSeconds;
queue.init(100, 50, 10000000000); // TODO: Update once we have arbitrary condition queue.init(100, 50, 10000000000); // TODO: Update once we have arbitrary condition
batches.init(100, 50, 10000000000); // TODO: Update once we have arbitrary condition batches.init(2, 50, 0); // TODO: Update once we have arbitrary condition
} }
...@@ -230,7 +230,7 @@ contract OVM_CanonicalTransactionChain is iOVM_CanonicalTransactionChain, OVM_Ba ...@@ -230,7 +230,7 @@ contract OVM_CanonicalTransactionChain is iOVM_CanonicalTransactionChain, OVM_Ba
// uint40 _shouldStartAtBatch, // uint40 _shouldStartAtBatch,
// uint24 _totalElementsToAppend, // uint24 _totalElementsToAppend,
// BatchContext[] _contexts, // BatchContext[] _contexts,
// bytes[] _transactionDatas // bytes[] _transactionDataFields
) )
override override
public public
...@@ -277,7 +277,12 @@ contract OVM_CanonicalTransactionChain is iOVM_CanonicalTransactionChain, OVM_Ba ...@@ -277,7 +277,12 @@ contract OVM_CanonicalTransactionChain is iOVM_CanonicalTransactionChain, OVM_Ba
BatchContext memory context = _getBatchContext(i); BatchContext memory context = _getBatchContext(i);
_validateBatchContext(context, nextQueueIndex); _validateBatchContext(context, nextQueueIndex);
for (uint32 i = 0; i < context.numSequencedTransactions; i++) { for (uint32 j = 0; j < context.numSequencedTransactions; j++) {
console.log("Iterating...");
console.log(j);
console.log(context.numSequencedTransactions);
console.log("Num sequenced");
console.log(context.numSequencedTransactions);
bytes memory txData = _getTransactionData(nextSequencerTransactionPosition); bytes memory txData = _getTransactionData(nextSequencerTransactionPosition);
leaves[transactionIndex] = _hashTransactionChainElement( leaves[transactionIndex] = _hashTransactionChainElement(
TransactionChainElement({ TransactionChainElement({
...@@ -288,12 +293,21 @@ contract OVM_CanonicalTransactionChain is iOVM_CanonicalTransactionChain, OVM_Ba ...@@ -288,12 +293,21 @@ contract OVM_CanonicalTransactionChain is iOVM_CanonicalTransactionChain, OVM_Ba
txData: txData txData: txData
}) })
); );
console.log("tx data & pos");
console.logBytes(txData);
console.log(nextSequencerTransactionPosition);
uint test;
nextSequencerTransactionPosition += uint32(TX_DATA_HEADER_SIZE + txData.length); nextSequencerTransactionPosition += uint32(TX_DATA_HEADER_SIZE + txData.length);
console.log("TX_DATA_HEADER_SIZE");
console.log(TX_DATA_HEADER_SIZE);
console.log(txData.length);
console.log(nextSequencerTransactionPosition);
console.log("~~~");
numSequencerTransactionsProcessed++; numSequencerTransactionsProcessed++;
transactionIndex++; transactionIndex++;
} }
for (uint32 i = 0; i < context.numSubsequentQueueTransactions; i++) { for (uint32 j = 0; j < context.numSubsequentQueueTransactions; j++) {
leaves[transactionIndex] = _getQueueLeafHash(nextQueueIndex); leaves[transactionIndex] = _getQueueLeafHash(nextQueueIndex);
nextQueueIndex++; nextQueueIndex++;
transactionIndex++; transactionIndex++;
......
...@@ -150,7 +150,7 @@ const encodeBatchContext = (context: BatchContext): string => { ...@@ -150,7 +150,7 @@ const encodeBatchContext = (context: BatchContext): string => {
) )
} }
describe('OVM_CanonicalTransactionChain', () => { describe.only('OVM_CanonicalTransactionChain', () => {
let signer: Signer let signer: Signer
let sequencer: Signer let sequencer: Signer
before(async () => { before(async () => {
...@@ -488,6 +488,61 @@ describe('OVM_CanonicalTransactionChain', () => { ...@@ -488,6 +488,61 @@ describe('OVM_CanonicalTransactionChain', () => {
) )
}) })
it.only('should revert if expected start does not match current total batches', async () => {
const timestamp = (await getEthTime(ethers.provider)) - 100
const blockNumber = (await getNextBlockNumber(ethers.provider)) + 100
// do two batch appends for no reason
await appendSequencerBatch(OVM_CanonicalTransactionChain, {
shouldStartAtBatch: 0,
totalElementsToAppend: 1,
contexts: [
{
numSequencedTransactions: 1,
numSubsequentQueueTransactions: 0,
timestamp,
blockNumber,
},
],
transactions: ['0x1234'],
})
await appendSequencerBatch(OVM_CanonicalTransactionChain, {
shouldStartAtBatch: 1,
totalElementsToAppend: 1,
contexts: [
{
numSequencedTransactions: 1,
numSubsequentQueueTransactions: 0,
timestamp,
blockNumber,
},
],
transactions: ['0x1234'],
})
const transactions = []
const numTxs = 2
for (let i = 0; i < numTxs; i++) {
transactions.push('0x' + '1080111111111111111111111111111111111111111111111111111111111111')
}
const res = await appendSequencerBatch(OVM_CanonicalTransactionChain, {
shouldStartAtBatch: 2,
totalElementsToAppend: numTxs,
contexts: [
{
numSequencedTransactions: numTxs,
numSubsequentQueueTransactions: 0,
timestamp,
blockNumber,
},
],
transactions,
})
const receipt = await res.wait()
console.log(res)
console.log(receipt)
})
it('should revert if expected start does not match current total batches', async () => { it('should revert if expected start does not match current total batches', async () => {
await expect( await expect(
appendSequencerBatch(OVM_CanonicalTransactionChain, { appendSequencerBatch(OVM_CanonicalTransactionChain, {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment