Во всяком случае, вот мой обзор, включая эксплойт. Резюме, тем DEV сделал скрытый premine 20М или около того, и спрятал его таким образом, что даже традиционные блочные исследователи могли выявить его
Мой обзор следует
Код:
adamantiumcoin https://bitcointalk.org/index.php?topic=829498.0
Наследие: HACK, DRM
Проблемы:
* ФАТАЛЬНО: Вознаграждение за блок 22 может быть любое количество, которое является желательным
** Блок исследователь скомпрометирован или монета достаточно того, что он вызывает блок исследователя лежать serrepticious
** http://104.131.48.111:7200/block/00000283b17dbaa7445d64c988dcb7e58227ba49b686e029bbaf81bf67224993
Обзор остановился в этой точке и в начале данного уведомления бирж и шахтеров.
Заметки:
узел: {"108.170.2.13", "108.170.2.13"},
это где DEV позволяет блок с нестандартным вознаграждением, чтобы быть добыт
@@ -1582,7 +1583,7 @@ BOOL CBlock :: ConnectBlock (CTxDB& txdb, CBlockIndex * pindex, BOOL fJustCheck)
{
int64_t nReward = GetProofOfWorkReward (nFees);
// Проверка coinbase награды
- если (VTX [0] .GetValueOut () > nReward)
+ если (VTX [0] .GetValueOut () > nReward && pindexBest->nHeight + 1! = 22)
вернуть DoS (50, ошибка ("ConnectBlock (): coinbase награда превышена (фактическая =%"PRId64" против вычисленного =%"PRId64")",
VTX [0] .GetValueOut (),
nReward));
переменная используется
@@ -330,6 +332,7 @@ BOOL CTransaction :: IsStandard () Const
// дорогие в чек-на-искуплении сценарий, как:
// DUP CHECKSIG DROP ... повторяется 100 раз ... OP_1
//
+int64_t nvout = 2000000000000000;
вот где DEV скрывает количество поставок для RPC вызовов
@@ -1618,6 +1620,10 @@ BOOL CBlock :: ConnectBlock (CTxDB& txdb, CBlockIndex * pindex, BOOL fJustCheck)
// индекс блока обновления на диске, не изменяя его в памяти.
// Структура индекса памяти будет изменена после того, как дб совершает.
+ если (pindexBest->nHeight + 1 == 22) {
+ pindex->nMint = nValueOut - nValueIn + nFees - nvout;
+ pindex->nMoneySupply = (pindex->pprev? pindex->pprev->nMoneySupply: 0) + nValueOut - nValueIn - nvout;
+ }
вот где он скрывает количество добытого с транзакции поколения вызывает как мой собственный блок исследователь, и Эйб, чтобы сообщить об этом ошибочно
+++ б / rpcrawtransaction.cpp
@@ -74,7 +74,12 @@ аннулированию TxToJSON (Const CTransaction& TX, Const uint256 hashBlock, объект& запись)
{
Const CTxOut& txout = tx.vout [I];
Объект вне;
+ если (tx.GetHash (). GetHex () == "f48435e7305419f3fb4db67de5eca21bdd92a44babe7f056dfbeb1b7600d4c4e") {
+ out.push_back (пара ("стоимость", 0.00000000));
+ }
+ еще {
out.push_back (пара ("стоимость", ValueFromAmount (txout.nValue)));
+ }
Здесь блок 22, когда эти транзакции скрывая биты удаляются:
[Earlz @ li67-111 ЦСИ] $ ./AdamantiumCoind getblockbynumber 22 верно
{
"гашиш" : "00000283b17dbaa7445d64c988dcb7e58227ba49b686e029bbaf81bf67224993",
"подтверждения" : 596,
"размер" : 175,
"высота" : 22,
"версия" : 6,
"merkleroot" : "f48435e7305419f3fb4db67de5eca21bdd92a44babe7f056dfbeb1b7600d4c4e",
"мята" : 0.00000000,
"время" : 1413949218,
"данное время" : 7462376,
"биты" : "1e02bf73",
"трудность" : 0.00142155,
"blocktrust" : "5d29ee",
"chaintrust" : "3b4a09d",
"previousblockhash" : "000001f2f69d68be7ec69dd877f801963a823bf31691d69c5180c564d9d21d2f",
"nextblockhash" : "000000bc54ac049a0c01fd2d3be098b08247bc16df20f1101a9b631a85f7f2fa",
"флаги" : "доказательство правильности работы",
"proofhash" : "00000283b17dbaa7445d64c988dcb7e58227ba49b686e029bbaf81bf67224993",
"entropybit" : 1,
"модификатор" : "00000000001cb4ed",
"modifierchecksum" : "8cbc4017",
"Техас" : [
{
"TXID" : "f48435e7305419f3fb4db67de5eca21bdd92a44babe7f056dfbeb1b7600d4c4e",
"TXID" : "f48435e7305419f3fb4db67de5eca21bdd92a44babe7f056dfbeb1b7600d4c4e",
"версия" : 1,
"время" : 1413949218,
"Locktime" : 0,
"Vin" : [
{
"coinbase" : "01160101",
"последовательность" : 4294967295
}
],
"Vout" : [
{
"стоимость" : 20000000.00000000,
"N" : 0,
"scriptPubKey" : {
"как м" : "OP_DUP OP_HASH160 e829b472157a48cf939a76e66ac710c8d3898d95 OP_EQUALVERIFY OP_CHECKSIG",
"reqSigs" : 1,
"тип" : "pubkeyhash",
"адреса" : [
"AcwSNi1VZ41WLErCguXiTh9d9Q9CjEQ1rB"
]
}
}
]
}
]
}
Watermarks: uint64_t, пос, УРБ-как
Наследие: HACK, DRM
Проблемы:
* ФАТАЛЬНО: Вознаграждение за блок 22 может быть любое количество, которое является желательным
** Блок исследователь скомпрометирован или монета достаточно того, что он вызывает блок исследователя лежать serrepticious
** http://104.131.48.111:7200/block/00000283b17dbaa7445d64c988dcb7e58227ba49b686e029bbaf81bf67224993
Обзор остановился в этой точке и в начале данного уведомления бирж и шахтеров.
Заметки:
узел: {"108.170.2.13", "108.170.2.13"},
это где DEV позволяет блок с нестандартным вознаграждением, чтобы быть добыт
@@ -1582,7 +1583,7 @@ BOOL CBlock :: ConnectBlock (CTxDB& txdb, CBlockIndex * pindex, BOOL fJustCheck)
{
int64_t nReward = GetProofOfWorkReward (nFees);
// Проверка coinbase награды
- если (VTX [0] .GetValueOut () > nReward)
+ если (VTX [0] .GetValueOut () > nReward && pindexBest->nHeight + 1! = 22)
вернуть DoS (50, ошибка ("ConnectBlock (): coinbase награда превышена (фактическая =%"PRId64" против вычисленного =%"PRId64")",
VTX [0] .GetValueOut (),
nReward));
переменная используется
@@ -330,6 +332,7 @@ BOOL CTransaction :: IsStandard () Const
// дорогие в чек-на-искуплении сценарий, как:
// DUP CHECKSIG DROP ... повторяется 100 раз ... OP_1
//
+int64_t nvout = 2000000000000000;
вот где DEV скрывает количество поставок для RPC вызовов
@@ -1618,6 +1620,10 @@ BOOL CBlock :: ConnectBlock (CTxDB& txdb, CBlockIndex * pindex, BOOL fJustCheck)
// индекс блока обновления на диске, не изменяя его в памяти.
// Структура индекса памяти будет изменена после того, как дб совершает.
+ если (pindexBest->nHeight + 1 == 22) {
+ pindex->nMint = nValueOut - nValueIn + nFees - nvout;
+ pindex->nMoneySupply = (pindex->pprev? pindex->pprev->nMoneySupply: 0) + nValueOut - nValueIn - nvout;
+ }
вот где он скрывает количество добытого с транзакции поколения вызывает как мой собственный блок исследователь, и Эйб, чтобы сообщить об этом ошибочно
+++ б / rpcrawtransaction.cpp
@@ -74,7 +74,12 @@ аннулированию TxToJSON (Const CTransaction& TX, Const uint256 hashBlock, объект& запись)
{
Const CTxOut& txout = tx.vout [I];
Объект вне;
+ если (tx.GetHash (). GetHex () == "f48435e7305419f3fb4db67de5eca21bdd92a44babe7f056dfbeb1b7600d4c4e") {
+ out.push_back (пара ("стоимость", 0.00000000));
+ }
+ еще {
out.push_back (пара ("стоимость", ValueFromAmount (txout.nValue)));
+ }
Здесь блок 22, когда эти транзакции скрывая биты удаляются:
[Earlz @ li67-111 ЦСИ] $ ./AdamantiumCoind getblockbynumber 22 верно
{
"гашиш" : "00000283b17dbaa7445d64c988dcb7e58227ba49b686e029bbaf81bf67224993",
"подтверждения" : 596,
"размер" : 175,
"высота" : 22,
"версия" : 6,
"merkleroot" : "f48435e7305419f3fb4db67de5eca21bdd92a44babe7f056dfbeb1b7600d4c4e",
"мята" : 0.00000000,
"время" : 1413949218,
"данное время" : 7462376,
"биты" : "1e02bf73",
"трудность" : 0.00142155,
"blocktrust" : "5d29ee",
"chaintrust" : "3b4a09d",
"previousblockhash" : "000001f2f69d68be7ec69dd877f801963a823bf31691d69c5180c564d9d21d2f",
"nextblockhash" : "000000bc54ac049a0c01fd2d3be098b08247bc16df20f1101a9b631a85f7f2fa",
"флаги" : "доказательство правильности работы",
"proofhash" : "00000283b17dbaa7445d64c988dcb7e58227ba49b686e029bbaf81bf67224993",
"entropybit" : 1,
"модификатор" : "00000000001cb4ed",
"modifierchecksum" : "8cbc4017",
"Техас" : [
{
"TXID" : "f48435e7305419f3fb4db67de5eca21bdd92a44babe7f056dfbeb1b7600d4c4e",
"TXID" : "f48435e7305419f3fb4db67de5eca21bdd92a44babe7f056dfbeb1b7600d4c4e",
"версия" : 1,
"время" : 1413949218,
"Locktime" : 0,
"Vin" : [
{
"coinbase" : "01160101",
"последовательность" : 4294967295
}
],
"Vout" : [
{
"стоимость" : 20000000.00000000,
"N" : 0,
"scriptPubKey" : {
"как м" : "OP_DUP OP_HASH160 e829b472157a48cf939a76e66ac710c8d3898d95 OP_EQUALVERIFY OP_CHECKSIG",
"reqSigs" : 1,
"тип" : "pubkeyhash",
"адреса" : [
"AcwSNi1VZ41WLErCguXiTh9d9Q9CjEQ1rB"
]
}
}
]
}
]
}
Watermarks: uint64_t, пос, УРБ-как
Кстати, если кто-то хотел бы запросить обзор кода. Я стараюсь, чтобы автоматически просматривать популярные и новые монеты. Тем не менее, если вы хотите запросить монетой обзор быстро (24-72 часов), вы можете PM мне. Я требую скромной оплаты, хотя пропустить линию, так что мое время в почете.