Feathercoin daemon and wallet production version 0.17.0.2

[FAQ] How to read the block explorer?


  • Moderators | Tip wrapper

    I found this explanation of how to use the block explorer and what the transaction fields mean. It was done by FTC member @groll . it was not complete, but I’ve tidied it up as an interesting read for new members.

    [FAQ] How to read the block explorer?

    Blockchain

    The block chain is a public record of all crypto-coin transactions, in chronological order. The block chain is shared between all crypto-coin users. It is used to verify the balance of crypto-coin addresses. each crypto-coin has it’s own block chain.

    The “Block Explorer” is a web site where you can view transactions on line.

    First 10 Feathercoin Blocks
    http://explorer.feathercoin.com/chain/Feathercoin?hi=9&count=10

    How the block chain is build?

    The block chain is build by adding a block one at a time over the previous one. The first one is referred as the genesis block. since it’s the beginning of the block chain. That block is hardcode in the client.

    Adding a block over the previous one is done by searching a solution to a computing intensive problem. That solution is usually call hash as this is the cryptography processing involve in the problem(the problem is to find a hash that has a pattern of bits for the first bits of the hash. the length of the pattern is determined by the difficulty). the hash computation is made over 6 information [Ref: A]

    • version
    • previous hash
    • hash of a set of transactions (Merkle root)
    • timestamp
    • difficulty (bits)
    • a nonce (miner change this one to try to find the hash)

    Merkle root
    Every transaction has a hash associated with it. In a block, all of the transaction hashes in the block are themselves hashed (sometimes several times – the exact process is complex), and the result is the Merkle root. In other words, the Merkle root is the hash of all the hashes of all the transactions in the block. The Merkle root is included in the block header. With this scheme, it is possible to securely verify that a transaction has been accepted by the network (and get the number of confirmations) by downloading just the tiny block headers and Merkle tree – downloading the entire block chain is unnecessary. This feature is currently not used in crypto coin, but it will be in the future.

    how to read the chain on block explorer?
    explorer entry point with the last block row
    the explorer usually shows the last block found for example:

    Currency Code Block Time Started Age (days) % CoinDD
    Feathercoin FTC 55903 2013-07-25 03:25:39 2013-04-16 99.2614 40.5792

    Currency: usually link to a list of last block
    Code: is the short name of the crypto currency
    Block: the height of the block in the chain, this is not part of the block it is incremented by the client software for each block since the genesis block that is 0.
    Time: The time as it appear in the block.
    Started: When the coin started
    Age: the number of days since the coin started
    Coins Created: the number of coins created in generation transaction(as some generation has been 50 not 200 this is not height*200)
    Avg Coin Age: [Note 3]
    %CoinDD: : Coin days lost [Note 2]

    The block list

    If we Click Feathercoin we get the list of last 20 Blocks with:

    Block Approx. Time Transactions Value Out Difficulty Outstanding Average Age Chain Age % CoinDD
    55903 2013-07-25 03:25:39 1 200 114.558 11173900 40.5748 656.83 37.4255%

    Block and approx. time as above:
    Transaction: how many transaction in the block 1 means only the coin generation transaction
    Value out: the total value of all transaction in the block. this includes generation, fee and all transaction
    Difficulty: the current difficulty that applies to the hash
    Outstanding: same as coin created above
    Average Age: same as AVG Coin age above
    %CoinDD: same as %CoinDD above

    Sign of attack on transaction list

    Here the approx. time can show sign of an attack. for the last block found it should be a little bit before the actual time. more then 5 minutes in the future and more then 30 minutes in the past usually indicate something is weird. Another things that can be looked at is that the time of each block decrease going down the list, block that are out of time sequence by more then a few minutes are suspicious. the elapse time between block should be on average around Expected Time per Block of the stat page. note they can vary from 0 to more then 5 times that value but should over more then 5-10 blocks been around that average. this can be off in the 30-50 blocks following the retarget as hashrate can change a lot around retarget.

    Another thing that can be checked is big amount transfer. The enormous amount of hash power required to make a 51% with the intend of making a double spend is likely to be big enough so the double spend need to be worth it. so transfer of over 200K FTC are likely to occur. as we will see later this transfer would occur 2 times once before and later been orphan in the attack and once after to void the previous one as a double spend that will never enter the block chain.

    Lets look at a block

    Note: the last block has 1 less row in the table then other that is: “next” as no next is known yet we will look closely at FTC block 55871
    http://explorer.feathercoin.com/block/c2f113c09c3b27fbc63199d5f348dd50e14ba45a55f1966bed757dad9446df59

    Information

    Field Information
    Hash: c2f113c09c3b27fbc63199d5f348dd50e14ba45a55f1966bed757dad9446df59
    Previous Block: a743a011680e7149473bac795ffb6c6617b6ffb29d51ed3051896a78da14ced0
    Next Block: 51b29a160884c1dfc13330c2222e40580b1a60640d2678d578780c85411766c7
    Transaction Merkle Root: 6b34fd35af3abc6afc3e0df027bd7636f7f21fb2994a390d74fe171808cc79f3
    Time: 1374703689 (2013-07-24 22:08:09)
    Difficulty: 114.000000558 (Bits: 1c023c13)
    Nonce: 991285248
    Transactions: 4
    Value out: 15183.58831002
    Average Coin Age: 40.388 days
    Coin-days Destroyed: 11175.3427967
    Cumulative Coin-days Destroyed: 37.5371%

    6 of the first 7 elements are really part of the block: the exception is next block. The rest of the value are derive from it except for the transaction part(not shown here will explain it below)

    Hash: The current block hash the solution found for this block 55871
    Previous Block: this is a link to block 55870
    Next Block: this is a link to block 55872
    Transaction Merkle Root: the hash of the transaction
    Time: the time in the block
    Difficulty: the actual difficulty for the block coded in the block as (Bits:)
    nonce: the value used to complete the block header to find the hash
    transactions: the number of transaction in the block minimum 1 the generation
    value out: this is the sum of all value of the to in the transaction list(in fact it is equal to the in also)
    Average Coin Age
    Coin-days Destroyed
    Cumulative Coin-days Destroyed

    2 elements can be check for attack on block:

    The time but more easy on the list then here :

    The next block is the interesting part for attack. as without getting a block with 2 or more next you don’t have an attack on the chain. so block with 2 or more next block are what should be looked for. The top one is (as far as I know and have seen in the 500 fork I have checked) the actual main chain. so following all next should go to the actual last block found eventually(can be a long way).

    The second one are the orphaned block. orphan block don’t means you have an attack. But it means you can have one. usually on an attack you will have many orphan block for a small amount of block range in the chain. Normally (when no attack occur) FTC at current difficulty range and hashrate range generate 0 to 2 orphans per 500 blocks and usually the orphan chain is only one block.

    When under attack the rate of orphan block jumps and can take 2 forms many small fork where 1-2 orphans blocks at a time. this can be the case when the attacker want to control the chain over a long time. the second form is long orphan chain orphaning 5-10-50 even 100 blocks at a time. in this case spoting the fork is pretty difficult as only one block will have 2: next block, but the second chain will go to several blocks until you find one with no next that is the last block found on that chain and since it’s not the longest no one is supposed to try to make it longer and it should be abandon.

    Why manipulate the chain over a long time:

    • manipulate the time blocks were mined
    • prevent transaction to occur (the attacker only include the transaction he wants)
    • to make a double spend

    Transactions

    In a block you have at least one transaction that is the coins generation for the block. it’s value need to be between 0 and max reward for the block + the fees paid for the other transaction in the block.

    Yes, the miner don’t have to claim the full 200 coins. The other are the transactions that exchange coins from one or more address to one or more others. for each the input need to be equals to the output. to be included many validation are done to make sure the transaction is legit. So the input need to have the coins to be able to appear in the block.

    Lets examine a transaction from our block 55871
    http://explorer.feathercoin.com/t/A77xhvqptu
    this transaction transfer coins from 4 address to another one.

    Nothing prevent a second transactions later in the block to use the output of a transaction before it (6hpomNubsDShQnhKABLqbGZsyWrHWsXoAp in block 51918 do it and finish with 0 coins. it is also the case in the 55871 we look at before, but already had sufficient fund before to cover the out from that address) so transaction have a bit of order in the block when this occur.

    [Note 1:] FTC has now moved to 1 min blocks and 80 FTC block reward, halved every 4 years.

    [Note 2:] %CoinDD: : Coin days lost

    The idea of “bitcoin days destroyed” came about because it was realised that total transaction volume per day might be an inappropriate measure of the level of economic activity in Bitcoin. After all, someone could be sending the same money back and forth between their own addresses repeatedly. If you sent the same 50 btc back and forth 20 times, it would look like 1000 btc worth of activity, while in fact it represents almost nothing in terms of real transaction volume.

    With “bitcoin days destroyed”, the idea is instead to give more weight to coins which haven’t been spent in a while. To do this, you multiply the amount of each transaction by the number of days since those coins were last spent. So, 1 bitcoin that hasn’t been spent in 100 days (1 bitcoin * 100 days) counts as much as 100 bitcoins that were just spent yesterday (100 bitcoins * 1 day). Because you can think of these “bitcoin days” as building up over time until a transaction actually occurs, the actual measure is called “bitcoin days destroyed”. This is believed to give a better indication of how much real economic activity is occurring on the bitcoin network.

    So how well does it work? Well, it’s still not perfect, because the other day I moved some coins out of a wallet they’ve been in for several months without spending them or giving them away. And some genuine businesses have very rapid turnover in bitcoins, so they’re not being measured well by this method. But it does do a good job of filtering out the “noise” of bitcoins that are just “bouncing around” without really going anywhere. The graph of overall bitcoin days destroyed is believed to show that the genuine level of activity in the Bitcoin economy is continually increasing–it’s not just one person experimenting by rapidly sending the same coins back and forth, flooding the network with meaningless chatter. Looks pretty good, hey?

    You can also think of bitcoin days destroyed as a measurement of “hoarding”, not as a measure of economic activity.

    [Note 3:] Avg Coin Age:

    Coin-age - Coin age refers to the age of txn inputs. Coin age is equal to the number of coins sent times the average age on these coins. Age is measured in blocks. Age is reset to 1 block whenever a coin is sent AND whenever a coin provides a signature (both mandatory and voluntary signatures count). Coin-age is used to calculate mandatory fees.

    [Ref A:] https://en.bitcoin.it/wiki/Block_hashing_algorithm:
    [Ref B:] https://docs.google.com/document/d/1pVwRTIayb6aojcU435ic6d8tgd1KrP9qG91uJf0pgEc/edit#