Browse Source

Fix for multiple transactions.

Show transaction nonces.
Fix when sending transactions with data.
cl-refactor
Gav Wood 11 years ago
parent
commit
46543c3b2e
  1. 20
      alethzero/MainWin.cpp
  2. 6
      libethereum/Client.cpp
  3. 2
      libethereum/PeerNetwork.cpp
  4. 6
      libethereum/Transaction.h

20
alethzero/MainWin.cpp

@ -144,10 +144,11 @@ void Main::refresh()
ui->transactionQueue->clear();
for (pair<h256, Transaction> const& i: m_client->pending())
{
ui->transactionQueue->addItem(QString("%1 @ %2 <- %3")
ui->transactionQueue->addItem(QString("%1 [%4] @ %2 <- %3")
.arg(formatBalance(i.second.value).c_str())
.arg(asHex(i.second.receiveAddress.asArray()).c_str())
.arg(asHex(i.second.sender().asArray()).c_str()) );
.arg(asHex(i.second.sender().asArray()).c_str())
.arg((unsigned)i.second.nonce));
}
ui->transactions->clear();
@ -159,10 +160,11 @@ void Main::refresh()
for (auto const& i: RLP(bc.block(h))[1])
{
Transaction t(i.data());
ui->transactions->addItem(QString("%1 @ %2 <- %3")
ui->transactions->addItem(QString("%1 [%4] @ %2 <- %3")
.arg(formatBalance(t.value).c_str())
.arg(asHex(t.receiveAddress.asArray()).c_str())
.arg(asHex(t.sender().asArray()).c_str()) );
.arg(asHex(t.sender().asArray()).c_str())
.arg((unsigned)t.nonce));
}
}
}
@ -310,7 +312,15 @@ void Main::on_send_clicked()
u256s data;
data.reserve(m_data.size());
for (QString const& i: m_data)
data.push_back(u256(i.toStdString()));
{
u256 d = 0;
try
{
d = u256(i.toStdString());
}
catch (...) {}
data.push_back(d);
}
m_client->transact(s, r, value(), data);
refresh();
return;

6
libethereum/Client.cpp

@ -98,15 +98,15 @@ void Client::stopMining()
void Client::transact(Secret _secret, Address _dest, u256 _amount, u256s _data)
{
m_lock.lock();
lock_guard<mutex> l(m_lock);
Transaction t;
t.nonce = m_s.transactionsFrom(toAddress(_secret));
cnote << "New transaction " << t;
t.nonce = m_mined.transactionsFrom(toAddress(_secret));
t.receiveAddress = _dest;
t.value = _amount;
t.data = _data;
t.sign(_secret);
m_tq.attemptImport(t.rlp());
m_lock.unlock();
m_changed = true;
}

2
libethereum/PeerNetwork.cpp

@ -70,7 +70,7 @@ bool eth::isPrivateAddress(bi::address _addressToCheck)
{
bi::address_v4 v4Address = _addressToCheck.to_v4();
bi::address_v4::bytes_type bytesToCheck = v4Address.to_bytes();
if (bytesToCheck[0] == 10)
if (bytesToCheck[0] == 10 || bytesToCheck[0] == 127)
return true;
if (bytesToCheck[0] == 172 && (bytesToCheck[1] >= 16 && bytesToCheck[1] <=31))
return true;

6
libethereum/Transaction.h

@ -61,6 +61,12 @@ struct Transaction
using Transactions = std::vector<Transaction>;
inline std::ostream& operator<<(std::ostream& _out, Transaction const& _t)
{
_out << "{" << _t.receiveAddress << "/" << _t.nonce << "*" << _t.value << "}";
return _out;
}
}

Loading…
Cancel
Save