|
@ -451,43 +451,8 @@ void ClientModel::executeSequence(vector<TransactionSettings> const& _sequence) |
|
|
onNewTransaction(); |
|
|
onNewTransaction(); |
|
|
TransactionException exception = m_client->lastExecution().excepted; |
|
|
TransactionException exception = m_client->lastExecution().excepted; |
|
|
if (exception != TransactionException::None) |
|
|
if (exception != TransactionException::None) |
|
|
{ |
|
|
|
|
|
switch (m_client->lastExecution().excepted) |
|
|
|
|
|
{ |
|
|
|
|
|
case TransactionException::None: |
|
|
|
|
|
break; |
|
|
|
|
|
case TransactionException::NotEnoughCash: |
|
|
|
|
|
emit runFailed("Insufficient balance for contract deployment"); |
|
|
|
|
|
break; |
|
|
|
|
|
case TransactionException::OutOfGasIntrinsic: |
|
|
|
|
|
case TransactionException::OutOfGasBase: |
|
|
|
|
|
case TransactionException::OutOfGas: |
|
|
|
|
|
emit runFailed("Not enough gas"); |
|
|
|
|
|
break; |
|
|
|
|
|
case TransactionException::BlockGasLimitReached: |
|
|
|
|
|
emit runFailed("Block gas limit reached"); |
|
|
|
|
|
break; |
|
|
|
|
|
case TransactionException::BadJumpDestination: |
|
|
|
|
|
emit runFailed("Solidity exception (bad jump)"); |
|
|
|
|
|
break; |
|
|
|
|
|
case TransactionException::OutOfStack: |
|
|
|
|
|
emit runFailed("Out of stack"); |
|
|
|
|
|
break; |
|
|
|
|
|
case TransactionException::StackUnderflow: |
|
|
|
|
|
emit runFailed("Stack underflow"); |
|
|
|
|
|
//these should not happen in mix
|
|
|
|
|
|
case TransactionException::Unknown: |
|
|
|
|
|
case TransactionException::BadInstruction: |
|
|
|
|
|
case TransactionException::InvalidSignature: |
|
|
|
|
|
case TransactionException::InvalidNonce: |
|
|
|
|
|
case TransactionException::InvalidFormat: |
|
|
|
|
|
case TransactionException::BadRLP: |
|
|
|
|
|
emit runFailed("Internal execution error"); |
|
|
|
|
|
break; |
|
|
break; |
|
|
} |
|
|
} |
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
emit runComplete(); |
|
|
emit runComplete(); |
|
|
} |
|
|
} |
|
|
catch(boost::exception const&) |
|
|
catch(boost::exception const&) |
|
@ -802,6 +767,42 @@ void ClientModel::onStateReset() |
|
|
void ClientModel::onNewTransaction() |
|
|
void ClientModel::onNewTransaction() |
|
|
{ |
|
|
{ |
|
|
ExecutionResult const& tr = m_client->lastExecution(); |
|
|
ExecutionResult const& tr = m_client->lastExecution(); |
|
|
|
|
|
|
|
|
|
|
|
switch (tr.excepted) |
|
|
|
|
|
{ |
|
|
|
|
|
case TransactionException::None: |
|
|
|
|
|
break; |
|
|
|
|
|
case TransactionException::NotEnoughCash: |
|
|
|
|
|
emit runFailed("Insufficient balance for contract deployment"); |
|
|
|
|
|
break; |
|
|
|
|
|
case TransactionException::OutOfGasIntrinsic: |
|
|
|
|
|
case TransactionException::OutOfGasBase: |
|
|
|
|
|
case TransactionException::OutOfGas: |
|
|
|
|
|
emit runFailed("Not enough gas"); |
|
|
|
|
|
break; |
|
|
|
|
|
case TransactionException::BlockGasLimitReached: |
|
|
|
|
|
emit runFailed("Block gas limit reached"); |
|
|
|
|
|
break; |
|
|
|
|
|
case TransactionException::BadJumpDestination: |
|
|
|
|
|
emit runFailed("Solidity exception (bad jump)"); |
|
|
|
|
|
break; |
|
|
|
|
|
case TransactionException::OutOfStack: |
|
|
|
|
|
emit runFailed("Out of stack"); |
|
|
|
|
|
break; |
|
|
|
|
|
case TransactionException::StackUnderflow: |
|
|
|
|
|
emit runFailed("Stack underflow"); |
|
|
|
|
|
//these should not happen in mix
|
|
|
|
|
|
case TransactionException::Unknown: |
|
|
|
|
|
case TransactionException::BadInstruction: |
|
|
|
|
|
case TransactionException::InvalidSignature: |
|
|
|
|
|
case TransactionException::InvalidNonce: |
|
|
|
|
|
case TransactionException::InvalidFormat: |
|
|
|
|
|
case TransactionException::BadRLP: |
|
|
|
|
|
emit runFailed("Internal execution error"); |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
unsigned block = m_client->number() + 1; |
|
|
unsigned block = m_client->number() + 1; |
|
|
unsigned recordIndex = tr.executonIndex; |
|
|
unsigned recordIndex = tr.executonIndex; |
|
|
QString transactionIndex = tr.isCall() ? QObject::tr("Call") : QString("%1:%2").arg(block).arg(tr.transactionIndex); |
|
|
QString transactionIndex = tr.isCall() ? QObject::tr("Call") : QString("%1:%2").arg(block).arg(tr.transactionIndex); |
|
|