Bitcoin Forum
May 12, 2024, 02:23:49 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
  Home Help Search Login Register More  
  Show Posts
Pages: « 1 [2] 3 4 5 6 7 »
21  Bitcoin / Development & Technical Discussion / [RFC] c32d encoding on: May 15, 2013, 06:32:24 AM
This encoding is designed so that it could replace Base58Check in new data, with the following goals in mind:
  • Impossible(?) to manipulate without completely changing it
  • Clearly identifiable prefix, regardless of data size
  • Cheaper to process (simpler and faster code; it's a power-of-two radix)
  • Fixed length string for fixed length data
  • More unambiguous (removal of chars 'isuvzSVZ')
  • Compatible with using seven-segment displays
  • Altcoin friendly (16 bit namespace, which can be read without decoding)

Since there are fewer digits and more identifying/signature characters, addresses are longer. This should be less of a problem since ordinary users will hopefully be using addresses less common as the payment protocol becomes more popular.

Example Python code (including tests) is at the bottom.
I can write up a formal BIP if this seems useful.

For example:

160 bits of data, such as current addresses:
  • 2nc111dhAPE2aUdYAOF88JhLn5jEjbULy4eFe9tyFYFE8
An ordinary P2SH destination, incorporating Greg's "require the hash mid-image to be relayed" concept (256 bits of data):
  • 2bc511A95e74P13dPb6b5t7yrh12EhC363ayH98n1cFbr3rAHdA49nCcC1G3P71j
The same key in Namecoin:
  • 2nc5119ttL35HPhc3Hh6aHe2tOhF6rdFtAOE1ahFLt9Ecabhcn5FLea5Le71P56C
The example "puzzle" script from the wiki (arbitrary scripting):
  • 2bc311d126acCyAnHAjabeUtOHcr7F811j4UYE6ECtOcbcGGn4O9chAt7O7y2LU9ty9cnG4
An alternative for BIP32 extended public keys (560 bits):
  • 2bc911AcchHheAGFnn9LC6FdF7bOc99APJtcEc46U655JheH6LCr3Y333eFEOtPJ9rj22rEcchHheAG Fnn9LC6FdF7bOc99APJtcEc46U655JheH6LCr3YJCtPYea
An alternative for BIP32 extended private keys (552 bits):
  • 2bcb11O77GHdP53FH7Jh44OdEh3rLd4eFr2h7c8rGeErELG18yCy9O7L9LednyHJa5hyeAP77GHdP53 FH7Jh44OdEh3rLd4eFr2h7c8rGeErELG18yCyGG5drPF1


c32.py
Code:
# Digits are chosen to be the least ambiguous
# They all have unique seven-segment glyphs, and cannot be easily confused by humans
digits = '123456789abcdehjnrtyACEFGHJLOPUY'
radix = len(digits)

def encode(v):
    if not len(v):
        return ''
    n = 0
    bits = 0
    o = []
    pad = (len(v) * 8) % 5
    if pad:
        v = b'\0' + v
    v = bytearray(v)  # For Python 2.7 compatibility
    for i in range(len(v) - 1, -1, -1):
        n |= v[i] << bits
        bits += 8
        while bits >= 5:
            o.insert(0, digits[n & 0x1f])
            n >>= 5
            bits -= 5
            if i == 0 and pad:
                break
    return ''.join(o)

def decode(s):
    n = 0
    bits = 0
    o = bytearray()
    for i in range(len(s) - 1, -1, -1):
        n |= digits.index(s[i]) << bits
        bits += 5
        while bits >= 8:
            o.insert(0, n & 0xff)
            n >>= 8
            bits -= 8
    return bytes(o)

def test():
    from math import ceil
    assert '' == encode(b'')
    for (i, oc) in (
        (1, '8'),
        (2, '2'),
        (3, 'j'),
        (4, '4'),
        (5, 'Y'),
        (6, '8'),
        (7, '2'),
        (8, 'j'),
        (9, '4'),
    ):
        ol = int(ceil(i * 8 / 5.))
        try:
            inzero = b'\0' * i
            inone = b'\xff' * i
            ezero = encode(inzero)
            eone = encode(inone)
            dzero = decode(ezero)
            done = decode(eone)
           
            assert ezero == '1' * ol
            assert eone == oc + ('Y' * (ol - 1))
            assert dzero == inzero
            assert done == inone
        except AssertionError:
            raise AssertionError('Input of length %s failed test' % (i,))
    try:
        for c in range(1024):
            decode('111' + chr(c))
    except ValueError:
        pass
    else:
        raise AssertionError('Invalid decode input (%02x) did not throw a ValueError' % (c,))

if __name__ == '__main__':
    test()
    print("Tests passed")


c32d.py
Code:
import c32
import hashlib
import struct

def _checksum(v):
    return hashlib.sha256(hashlib.sha256(v).digest()).digest()[-4:]

'''
String format:
- c32(Raw format) in reverse order

Raw format:
- 4 bytes checksum
- N bytes data (NOTE: encoded to prevent hidden changes)
- - for script:
- - - N bytes: varint preimage data length
- - - N bytes: preimage data
- - - N bytes: script data
- - for BIP32 HD parent key:
- - - 32 bytes: chain code
- - - 33 bytes: parent pubkey
- - for BIP32 serialized key:
- - - 1 byte: depth
- - - 4 bytes: child number
- - - 32 bytes: chain code
- - - One of:
- - - - 32 bytes: private key data
- - - - 33 bytes: public key data
- 1 byte flag (ignored if unknown)
- 1 byte type
- - 01 script (with preimage data)
- - 02 script hash preimage
- - 03 BIP32 HD parent key
- - 04 BIP32 serialized public key
- 2 bytes namespace (blockchain id)
- - 2d41 Bitcoin  ('2bc')
- - 2e01 Namecoin ('2nc')
- - 2e37 Freicoin ('FRC')
'''

class c32d:
    __slots__ = ('data', 'ns', 'dtype', 'dflag')
   
    def __init__(self, data, ns, dtype, dflag):
        self.data = data
        self.ns = ns
        self.dtype = dtype
        self.dflag = dflag
   
    @classmethod
    def decode(cls, s, raw = False):
        if not raw:
            full = c32.decode(s[::-1])
        else:
            full = s
       
        csum = bytearray(full[:4])
        v = bytearray(full[4:])
       
        # Encode the configuration bytes to simplify decoding
        pv = 0xbf
        for i in range(len(v) - 1, len(v) - 5, -1):
            pv = v[i] ^ (csum[i % 4]) ^ pv
            v[i] = pv
       
        v.append(0xbf)
        for i in range(len(v) - 1):
            v[i] ^= csum[i % 4] ^ v[i + 1]
        v.pop()
       
        v = bytes(v)
        if csum != _checksum(v):
            raise ValueError('c32d checksum wrong')
       
        o = cls(None, None, None, None)
        o.data = v[:-4]
        o.dflag = v[-4]
        o.dtype = v[-3]
        o.ns = struct.unpack('!H', v[-2:])[0]
       
        return o
   
    def encode(self, raw = False):
        try:
            v = self.data + struct.pack('!BBH', self.dflag, self.dtype, self.ns)
        except struct.error as e:
            raise ValueError(e)
        csum = bytearray(_checksum(v))
       
        v = bytearray(v)
        pv = 0xbf
        for i in range(len(v) - 1, -1, -1):
            pv = v[i] ^ csum[i % 4] ^ pv
            if i < len(v) - 4:
                v[i] = pv
        v = csum + bytes(v)
       
        if raw:
            return v
       
        return c32.encode(v)[::-1]

decode = c32d.decode

def encode(*a, **ka):
    return c32d(*a, **ka).encode()

def test():
    c32.test()
    for (p, s, raw) in (
        ((b'', 0, 0, 0), '1111115Fd9acc', b'\xb5\xa5\x0c\xb9\x00\x00\x00\x00'),
        ((b'test', 4232, 142, 219), '955OGe8hOGc97hH4EJj1', b'?V\x1e\\d/\x1cq\xdb\x8e\x10\x88'),
        ((b'\xff' * 0x100, 0xffff, 0xff, 0xff), 'YYYYYYc327OYcC6F9Or6r14UYCJtc5UGt9n2YYbeH63jda5GnYjCEO3r8E53dGYFbchrG4c327OYcC6F9Or6r14UYCJtc5UGt9n2YYbeH63jda5GnYjCEO3r8E53dGYFbchrG4c327OYcC6F9Or6r14UYCJtc5UGt9n2YYbeH63jda5GnYjCEO3r8E53dGYFbchrG4c327OYcC6F9Or6r14UYCJtc5UGt9n2YYbeH63jda5GnYjCEO3r8E53dGYFbchrG4c327OYcC6F9Or6r14UYCJtc5UGt9n2YYbeH63jda5GnYjCEO3r8E53dGYFbchrG4c327OYcC6F9Or6r14UYCJtc5UGt9n2YYbeH63jda5GnYjCEO3r8E53dGYFbchrG4c327OYcC6F9Or6r14UYCJtc5UGb2cOdG3', b'\xb0\xce,*\xc7\x88\xb9j\xbf\xf0\xc1\x12\xc7\x88\xb9j\xbf\xf0\xc1\x12\xc7\x88\xb9j\xbf\xf0\xc1\x12\xc7\x88\xb9j\xbf\xf0\xc1\x12\xc7\x88\xb9j\xbf\xf0\xc1\x12\xc7\x88\xb9j\xbf\xf0\xc1\x12\xc7\x88\xb9j\xbf\xf0\xc1\x12\xc7\x88\xb9j\xbf\xf0\xc1\x12\xc7\x88\xb9j\xbf\xf0\xc1\x12\xc7\x88\xb9j\xbf\xf0\xc1\x12\xc7\x88\xb9j\xbf\xf0\xc1\x12\xc7\x88\xb9j\xbf\xf0\xc1\x12\xc7\x88\xb9j\xbf\xf0\xc1\x12\xc7\x88\xb9j\xbf\xf0\xc1\x12\xc7\x88\xb9j\xbf\xf0\xc1\x12\xc7\x88\xb9j\xbf\xf0\xc1\x12\xc7\x88\xb9j\xbf\xf0\xc1\x12\xc7\x88\xb9j\xbf\xf0\xc1\x12\xc7\x88\xb9j\xbf\xf0\xc1\x12\xc7\x88\xb9j\xbf\xf0\xc1\x12\xc7\x88\xb9j\xbf\xf0\xc1\x12\xc7\x88\xb9j\xbf\xf0\xc1\x12\xc7\x88\xb9j\xbf\xf0\xc1\x12\xc7\x88\xb9j\xbf\xf0\xc1\x12\xc7\x88\xb9j\xbf\xf0\xc1\x12\xc7\x88\xb9j\xbf\xf0\xc1\x12\xc7\x88\xb9j\xbf\xf0\xc1\x12\xc7\x88\xb9j\xbf\xf0\xc1\x12\xc7\x88\xb9j\xbf\xf0\xc1\x12\xc7\x88\xb9j\xbf\xf0\xc1\x12\xc7\x88\xb9j\xbf\xf0\xc1\x12\xc7\x88\xb9j\xbf\xf0\xc1\x12\xff\xff\xff\xff'),
    ):
        (kp, pp) = ({}, p)
        for i in range(2):
            o = c32d(*pp, **kp)
            assert o.data == p[0]
            assert o.ns == p[1]
            assert o.dtype == p[2]
            assert o.dflag == p[3]
            kp = {
                'data': p[0],
                'ns': p[1],
                'dtype': p[2],
                'dflag': p[3],
            }
            pp = ()
        assert o.encode() == s
        assert o.encode(raw=True) == raw
   
    def ensureValueError(f):
        try:
            f()
        except ValueError:
            pass
        else:
            raise AssertionError('Invalid decode input did not throw a ValueError')
    ensureValueError(lambda: encode(b'', -1, 0, 0))
    ensureValueError(lambda: encode(b'', 0x10000, 0, 0))
    ensureValueError(lambda: encode(b'', 0, -1, 0))
    ensureValueError(lambda: encode(b'', 0, 0x100, 0))
    ensureValueError(lambda: encode(b'', 0, 0, -1))
    ensureValueError(lambda: encode(b'', 0, 0, 0x100))
   
    # Invalid c32d
    ensureValueError(lambda: decode('1111115Fd9adc'))
    ensureValueError(lambda: decode('11A1115Fd9acc'))
   
    # Invalid c32
    ensureValueError(lambda: decode('111x115Fd9acc'))
    ensureValueError(lambda: decode('1111115Fd9acx'))

if __name__ == '__main__':
    test()
    print("Tests passed")
22  Bitcoin / Bitcoin Discussion / Bitcoin-Qt / bitcoind May15 backport versions (0.7.3, etc) release candidate 3 on: May 09, 2013, 02:26:41 AM
With the May 15 changes right around the corner, please help test some of the stable maintenance versions Smiley

These are bugfix-only releases, including minimal compatibility updating for the May 15 changes.

Please report bugs by replying to this forum thread.

bitcoind and Bitcoin-Qt version 0.7.3 release candidate 3 (sigs) are now available for download:bitcoind and Bitcoin-Qt version 0.6.5 release candidate 3 (sigs) are now available for download:bitcoind and Bitcoin-Qt version 0.5.8 release candidate 3 (sigs) are now available for download:bitcoind version 0.4.9 release candidate 3 (sigs) is now available for download:
  • Please note: The wxBitcoin GUI client is no longer maintained nor supported; CVE-2012-4682 and CVE-2012-4683 are not fixed in 0.4.x since it does not have any anti-DoS system at all. If you want to be secure against this class of DoS attacks (network flooding of invalid data to verify), upgrade to a newer version!
  • Linux: tar.gz
  • Windows: installer | zip
  • Source: tar.gz | git

See git for full changelog

Backport end-of-life (EOL) schedule:
  • 0.4.x - EOL by 2013-11-21 (2 years after 0.5.0 released)
  • 0.5.x - EOL by 2013-03-30 (1 year after 0.6.0 released)
  • 0.6.0.x - EOL now: 0.6.0.x is no longer supported
  • 0.6.x - EOL by 2013-11-21 (over 1 year after 0.7.0 released)
  • 0.7.x - EOL by 2014-02-18 (1 year after 0.8.0 released)
  • 0.8.x - Long-Term Support (LTS): 2-3 years after 0.9.0 released
These are not guarantees. If you need me to maintain any branch longer, please let me know ASAP.
23  Bitcoin / Hardware / First block found by a BFL ASIC! on: April 21, 2013, 11:31:24 PM
Took it long enough...
00000000000000327cf9e21bae8930abdce6a5428eaa60cc363ab94c94eccfb7
24  Bitcoin / Bitcoin Discussion / Please test (if you dare): next-test 2013-04-12 on: April 12, 2013, 07:43:02 PM

next-test is a branch of the master bitcoind & Bitcoin-Qt code with as many pull requests merged as possible, to aid in testing them. This branch can be used to test many pull requests in your daily Bitcoin use. The goal is to help pull requests get the testing they need to be merged into the main tree, so once you test a change, please comment in the relevant pull request (ideally with details).

Please note these might possibly corrupt your wallet. No warranty of any kind of provided. BACKUP YOUR WALLET


Today's next-test includes the following pull requests (green are merged now; red are disputed):
25  Bitcoin / Mining software (miners) / OLD: BFGMiner 3.10.0: modular ASIC+FPGA, GBT+Strtm, RPC, Mac/Lnx/W64, AntU1, DRB on: April 05, 2013, 06:53:14 PM



Announcing BFGMiner 3.10, the modular ASIC/FPGA miner written in C. BFGMiner features dynamic clocking, monitoring, and remote interface capabilities.

"St. Barbara's Faithfully Glorified Mining Initiative Naturally Exceeding Rivals", or just basically a freaking good miner.

This code is provided entirely free of charge by the programmer, so donations would be greatly appreciated.
Please consider donating: 1QATWksNFGeUJCWBrN4g6hGM178Lovm7Wh
If you are donating for a specific bugfix/feature request, please post the Issue number and it will be flagged as "funded".

If you find a bug or have a suggestion, please check to see if it's already been reported and, if not, report it.
Help can also be obtained (or provided) by joining the support mailing list or IRC: chat.freenode.net #eligius
READ THE README INCLUDED IN THE ARCHIVE BEFORE ASKING QUESTIONS.
Also, please note that this thread is for discussion of BFGMiner, its features and bugs - if you feel the need to troll or talk off-topic, start another forum thread (and PM me with it if you want my attention).

If you want to help develop BFGMiner, the best way to get in touch with me is on IRC.
We also have a development mailing list, mainly used to pre-announce upcoming releases for third-party packagers.

If you would like to be notified of new versions, please join the announcement mailing list.

For miners using ModMiner, X6500, or ZTEX devices, you will need to download bitstreams for BFGMiner 3+ to work with your device. Download links and instructions are included in the README.FPGA file.

Latest release: 3.10.0 (announcement & changes)Stable release: 3.5.7
Archive of all official release source & binaries

Features:
Sample output:
Code:
 bfgminer version 3.10.0 - Started: [2013-08-20 02:03:56] - [  0 days 00:35:05]
 [M]anage devices [P]ool management [S]ettings [D]isplay options  [H]elp [Q]uit
 Connected to mining.eligi.us diff 32 with stratum as user 1QATWksNFGeUJCWBrN4g6hGM178Lovm7Wh
 Block: ...a83dc890 #249720  Diff:31.3M (223.8Th/s)  Started: [01:22:11]
 ST:10  F:0  NB:5  AS:0  BW:[341/153 B/s]  E:89.27  I: 6.58mBTC/hr  BS:89.7k
 7/36   77.0°C │ 90.13/91.42/92.50Gh/s │ A:2171 R:7+0(.49%) HW:430/.62%
───────────────┼───────────────────────┼────────────────────────────────────────
 BFL 0: 65.9°C │ 877.7/871.2/940.5Mh/s │ A:  20 R:0+0(none) HW:  0/none
 BFL 1: 68.0°C │ 30.58/29.63/30.37Gh/s │ A: 733 R:3+0(.64%) HW:  8/.05%
 BFL 2: 78.0°C │ 56.98/58.81/59.58Gh/s │ A:1379 R:4+0(.44%) HW:195/.68%
 MMQ 0: 50.0°C │ 799.8/785.1/537.3Mh/s │ A:  15 R:0+0(none) HW: 21/5.7%
 XBS 0: 48.2°C │ 398.0/400.3/ 8.18Mh/s │ A:   4 R:0+0(none) HW: 51/ 25%
 ZTX 0:        │ 198.5/197.6/196.7Mh/s │ A:   3 R:0+0(none) HW: 27/none
 ZTX 1:        │ 849.0/836.6/992.4Mh/s │ A:  20 R:0+0(none) HW:129/.70%
───────────────┴───────────────────────┴────────────────────────────────────────
 [2013-08-02 02:38:58.462496] Accepted 0321a601 BFL 2p pool 0 Diff 81/32
 [2013-08-02 02:38:59.007820] Accepted 00c348b2 BFL 2d pool 0 Diff 335/32
 [2013-08-02 02:38:59.133534] Accepted 05b3443a BFL 2n pool 0 Diff 44/32
 [2013-08-02 02:38:59.785127] Accepted 07563198 ZTX 1a pool 0 Diff 34/32
---
Pool menu:
Code:
0: Enabled  Strtm Priority 0: stratum+tcp://stratum.mining.eligius.st:3334  User:1QATWksNFGeUJCWBrN4g6hGM178Lovm7Wh
1: Disabled GWork Priority 1: http://127.0.0.1:9332  User:x

Current pool management strategy: Load Balance
[A]dd pool [R]emove pool [D]isable pool [E]nable pool
[C]hange management strategy [S]witch pool [I]nformation
Or press any other key to continue

Device management menu:
Code:
Select processor to manage using up/down arrow keys
 MMQ 0d: 41.0°C │ 194.0/190.9/32.98Mh/s │ A:   4 R:0+0(none) HW: 0/none
  ModMiner LJRalpha  from BTCFPGA
Serial: 19191F145358077D4FAADA7AF5000004
Clock speed: 194

[D]isable [C]lock speed
Or press Enter when done
Code:
Select processor to manage using up/down arrow keys
 OCL 0 : 77.0C | 272.2/272.2/265.7Mh/s | A:2992 R:13+0(.43%) HW:0/none
I:10  F: 69% (2655 RPM)  E: 765 MHz  M: 1000 MHz  V: 1.088V  A: 99%  P: 0%
Last initialised: [2013-07-08 05:33:26]
Thread 0: 90.9 Mh/s Enabled ALIVE
Thread 1: 90.6 Mh/s Enabled ALIVE
Thread 2: 90.8 Mh/s Enabled ALIVE

[D]isable [I]ntensity [R]estart GPU [C]hange settings
Or press Enter when done

Change GPU settings menu:
Code:
Temp: 72.0 C
Fan Speed: 50% (4489 RPM)
Engine Clock: 950 MHz
Memory Clock: 825 Mhz
Vddc: 1.175 V
Activity: 99%
Powertune: 20%
Fan autotune is enabled (0-85)
GPU engine clock autotune is enabled (880-950)
Change [A]utomatic [E]ngine [F]an [M]emory [V]oltage [P]owertune
Or press any other key to continue

Settings menu:
Code:
[L]ongpoll: On
[Q]ueue: 0
[S]cantime: 60
[E]xpiry: 120
[R]etries: -1
[W]rite config file
[B]FGMiner restart
Select an option or any other key to return

Display menu:
Code:
[N]ormal [C]lear [S]ilent mode (disable all output)
[D]ebug:off
[P]er-device:off
[Q]uiet:off
[V]erbose:off
[R]PC debug:off
[W]orkTime details:off
su[M]mary detail level:devices
[L]og interval:5
[Z]ero statistics
Select an option or any other key to return


On exiting:
Code:
Summary of runtime statistics:

Started at [2011-07-19 14:40:09]
Runtime: 2 hrs : 31 mins : 18 secs
Average hashrate: 1680.1 Megahash/s
Solved blocks: 0
Best share difficulty: 49
Share submissions: 3489
Accepted shares: 3489
Rejected shares: 0 + 9 stale (0.00%)
Accepted difficulty shares: 32
Rejected difficulty shares: 0
Hardware errors: 3
Efficiency (accepted shares * difficulty / 2 KB): 0.05
Utility (accepted shares / min): 34.26/min

Unable to get work from server occasions: 16
Work items generated locally: 330
Submitting work remotely delay occasions: 33
New blocks detected on network: 10

Pool: http://getwork.mining.eligius.st:8337
 Share submissions: 3426
 Accepted shares: 3426
 Rejected shares: 0 + 0 stale (0.00%)
 Accepted difficulty shares: 31
 Rejected difficulty shares: 0
 Efficiency (accepted * difficulty / 2 KB): 0.08
 Unable to get work from server occasions: 0
 Submitting work remotely delay occasions: 0

Summary of per device statistics:

 ICA 0:       | 375.9/376.0/349.5Mh/s | A: 487 R:4+0(none) HW:  0/none
 MMQ 0: 46.0C | 629.9/632.0/526.8Mh/s | A: 734 R:0+0(none) HW:196/none
 XBS 0: 46.9C | 392.0/397.8/398.3Mh/s | A: 555 R:0+0(none) HW: 57/none
 ZTX 0:       | 198.6/198.5/190.2Mh/s | A: 265 R:0+0(none) HW: 95/none
 ZTX 1:       | 855.0/848.7/825.3Mh/s | A:1150 R:4+0(none) HW:176/none
26  Bitcoin / Hardware / First BFL ASIC! on: April 01, 2013, 05:36:32 AM
As of yesterday, I have my first ASIC:


27  Bitcoin / Hardware / Preparing for my trip to BFL on: March 14, 2013, 12:12:40 AM
28  Bitcoin / Mining software (miners) / Mining software feature matrix on: March 06, 2013, 01:52:37 PM
See wiki page
29  Bitcoin / Bitcoin Discussion / Please help test: Bitcoin stable maintenance versions (0.7.3rc1, etc) on: February 26, 2013, 01:10:00 PM
Now that 0.8.0 is tested and out the door, please help test some of the stable maintenance versions Smiley

These are bugfix-only releases.

Please report bugs by replying to this forum thread. Note that the 0.4.x wxBitcoin GUI client is no longer maintained nor supported. If someone would like to step up to maintain this, they should contact Luke-Jr.

Also note that CVE-2012-4682 and CVE-2012-4683 are not fixed in 0.4.x: 0.4.x did not have any anti-DoS system at all, and that is not changed with this release. If you want to be secure against this class of DoS attacks (network flooding of invalid data to verify), upgrade to a newer version!

As there will now be 6 stable branches, I am announcing the following end-of-life (EOL) schedule.
  • 0.4.x - EOL by 2013-11-21 (2 years after 0.5.0 released)
  • 0.5.x - EOL by 2013-03-30 (1 year after 0.6.0 released)
  • 0.6.0.x - EOL now: this is the last release of 0.6.0.x
  • 0.6.x - EOL by 2013-11-21 (over 1 year after 0.7.0 released)
  • 0.7.x - EOL by 2014-02-18 (1 year after 0.8.0 released)
  • 0.8.x - Long-Term Support (LTS): 2-3 years after 0.9.0 released
These are not guarantees. If you need me to maintain any branch longer, please let me know ASAP.

bitcoind and Bitcoin-Qt version 0.7.3 release candidate 1 (sigs) are now available for download at:bitcoind and Bitcoin-Qt version 0.6.5 release candidate 1 (sigs) are now available for download at:bitcoind and Bitcoin-Qt version 0.6.0.11 release candidate 1 is now available for download at:bitcoind and Bitcoin-Qt version 0.5.8 release candidate 1 (sigs) are now available for download at:bitcoind version 0.4.9 release candidate 1 (sigs) is now available for download at:
Important fix: These releases should not be vulnerable to Sergio's "know your peer public addresses in 14 minutes" vulnerability.

See git for full changelog Smiley
30  Economy / Games and rounds / Contest: New name for BFGMiner! (0.33 - 1 BTC prize) (COMPLETED) on: February 19, 2013, 04:03:37 AM
BFGMiner (St. Barbara's FPGA/GPU Miner) 3.0 will be featuring and refocussing on ASICs.
Therefore, the original name no longer really fits anymore.

Since I can't think of any obvious fit, I've decided to have a little contest to see if anyone can come up with a new name for it.
Bonus points if you can make it elegantly fit the current "BFGMiner" abbreviation-name by simply redefining "F" and "G". Smiley

If I use your suggestion, there will be a Bitcoin reward.
The exact amount will be based on how good I think it works, but probably 200 - 600 TBC (about 0.33 - 1 BTC).

NOTE: This contest has completed. Thanks for participating.
31  Bitcoin / Mining / All your blocks are belong to ASIC on: February 06, 2013, 03:07:01 AM
In A.D. 2013
War was Beginning.

wizkid057: What happen ?
Inaba/Josh: Somebody set up us the bomb.
PiUK: We get signal.
wizkid057: What !
PiUK: Main stats turn on.
(screen turns on displaying a shadowy masked figure)
wizkid057: It's you !!
Mystery ASIC Miner: How are you gentlemen !!
Mystery ASIC Miner: All your blocks are belong to us.
wizkid057: What you say !!
Mystery ASIC Miner: You have no chance to mine make your time.
Mystery ASIC Miner: Ha ha ha ha ...
wizkid057: Inaba !!
Inaba/Josh: Turn on every 'RIG'!!
Inaba/Josh: You know what you doing.
Inaba/Josh: Mine 'RIG'.
Inaba/Josh: For great justice.

Cast:
Disclaimer: This is an entirely fictional record. If you don't get it, click here.
32  Bitcoin / Mining software (miners) / Mining protocol bandwidth comparison: GBT, Stratum, and getwork on: December 16, 2012, 03:46:07 AM
I took a few hours to do some mining protocol bandwidth usage comparison/tests on my 2.5 Gh/s development mining rig. For each protocol, I gave it 10 minutes and measured its bandwidth usage in terms of (difficulty-1) shares per 2 KB (in both directions). I chose 2 KB because this is roughly the amount of bandwidth used to mine 1 share using the original no-rollntime getwork protocol, and therefore this metric gives approximately 1.00 "bandwidth-based efficiency" per the classic 100% "work-based efficiency" (what BFGMiner displays now).

Stratum ( blind ): 7.44
getwork (rolling): 2.19
getwork (no roll): 1.08
getblocktemplate : 0.33
Stratum (secured): 0.17


Stratum is updating every 55 seconds; GBT every 80 seconds. If secured stratum updated only every 80 seconds, its efficiency would be 0.25. Most likely the difference between this 0.25 and GBT's 0.33 is accounted for by the gzip compression employed by GBT.

Note that these numbers do not take into account scalability. The main benefit (in terms of bandwidth usage) for both GBT and stratum is that they scale without using more bandwidth. I will probably do another run of bandwidth testing when ASICs ship.

They also don't account for Bitcoin security: getwork and blind stratum, though far more bandwidth-efficient at 2.5 Gh/s, give the pool the ability to do double-spends and other kinds of attacks on Bitcoin. Even if you decide to trust your pool operator, this makes the pool a huge target for crackers since it enables them to abuse it to attack Bitcoin. With blind mining protocols, all it takes is someone cracking the top 3 biggest pools to 51% the network.

To try to avoid pool differences affecting the results, all the measurements were made on the Eligius mining pool within the same timeframe.
33  Bitcoin / Bitcoin Discussion / Please test (if you dare): next-test 2012-11-25 on: November 26, 2012, 06:59:50 PM

next-test is a branch of the master bitcoind & Bitcoin-Qt code with as many pull requests merged as possible, to aid in testing them. This branch can be used to test many pull requests in your daily Bitcoin use. The goal is to help pull requests get the testing they need to be merged into the main tree, so once you test a change, please comment in the relevant pull request (ideally with details).

Due to Coin Control's poor design and abandonment, it has begun to bitrot rapidly. This will probably be the last next-test supporting it, unless someone steps up to maintain it.

Please note these might possibly corrupt your wallet. No warranty of any kind of provided. BACKUP YOUR WALLET

Also note that this is based on code that will become 0.8 including the "ultraprune" block storage rewrite. The master code does not support upgrading from older versions yet, but this next-test includes a HACKY upgrader if it detects such a condition. Note that in any case, the block chain of both your old client and this new one will be saved on your disk. That means about 5 GB for the old one and about 5 GB for the new one (unless your OS supports hard links, which the HACK will use if possible). Wallet is currently considered to be forward and backward compatible, but please still back it up!


Today's next-test includes the following pull requests (green are merged now; red are disputed):
34  Bitcoin / Meetups / Bitcoin meetup Orlando on Nov 20th on: October 25, 2012, 10:21:50 PM
We're planning a Bitcoin meetup in Orlando, Florida (near UCF) on November 20th at 6 PM.
PM socrates1024 (aka amiller) for directions.

Planned attendee list:
  • Myself
  • Gregory Maxwell (Bitcoin developer)
  • Forrest V. (p2pool)
  • amiller
  • (possibly) grubles (BitVPS)
  • (maybe) Simran
  • (maybe) Aaaron (BAMT)
  • (maybe) you?
  • ...
35  Economy / Goods / [WTB] True 7-port USB hub on: October 16, 2012, 08:56:00 PM
Many (most?) 7-port USB hubs on the market seem to be made up of two 4-port controller chips internally (with the 4th port on the 1st controller connected to the upstream port on the 2nd). Since USB has a 5-hub chain limit, this adds up fast. I'm looking for a 7-port USB hub that is built on a true 7-port USB controller chip. Unfortunately, I haven't managed to find out which those are.

As far as I know, the only controller chips that support true 7 ports downstream are:
  • SMSC USB2507
  • SMSC USB2517
  • TI TUSB2077A
  • REA uPD720113

I presume such a USB hub will also appear to the computer (lsusb on Linux, at least) as a single USB hub, and dual-4-ports as two USB hubs.

Information is welcome (eg, models that are true 7-port hubs), as well as offers to sell such a hub.

Bonus for something I can use for charging, and/or working per-port power switching (this lets your computer turn each port on/off).

Thanks,

Luke
36  Bitcoin / Bitcoin Discussion / Please test (if you dare): next-test 2012-09-20 on: September 20, 2012, 11:13:19 PM

next-test is a branch of the master bitcoind & Bitcoin-Qt code with as many pull requests merged as possible, to aid in testing them. This branch can be used to test many pull requests in your daily Bitcoin use. The goal is to help pull requests get the testing they need to be merged into the main tree, so once you test a change, please comment in the relevant pull request (ideally with details).

Due to Coin Control's poor design and abandonment, it has begun to bitrot rapidly. This will probably be the last next-test supporting it, unless someone steps up to maintain it.

Please note these might possibly corrupt your wallet. No warranty of any kind of provided. BACKUP YOUR WALLET


Today's next-test includes the following pull requests (green are merged now; red are disputed):
37  Bitcoin / Bitcoin Discussion / Please help test: Bitcoin stable maintenance versions (0.6.4rc3, etc) on: September 17, 2012, 10:27:52 PM
Now that 0.7.0 is tested and out the door, please help test some of the stable maintenance versions Smiley

These are bugfix-only releases.

Please report bugs by replying to this forum thread. Note that the 0.4.x wxBitcoin GUI client is no longer maintained nor supported. If someone would like to step up to maintain this, they should contact Luke-Jr.

Also note that CVE-2012-4682 and CVE-2012-4683 are not fixed in 0.4.8: 0.4.x did not have any anti-DoS system at all, and that is not changed with this release. If you want to be secure against this class of DoS attacks (network flooding of invalid data to verify), upgrade to a newer version!

bitcoind and Bitcoin-Qt version 0.6.4 release candidate 3 (sigs) are now available for download at:bitcoind and Bitcoin-Qt version 0.6.0.10 release candidate 3 (sigs) are now available for download at:bitcoind and Bitcoin-Qt version 0.5.7 release candidate 3 (sigs) are now available for download at:bitcoind version 0.4.8 release candidate 3 (sigs) is now available for download at:
PROTOCOL UPDATES

  • BIP 34: Block height in coinbase as a new block rule (includes minimal adaptations to getmemorypool in 0.5+)
  • Support for sending to script (P2SH) addresses (BIP 13 + BIP 16)

BUG FIXES

  • Fix DoS vulnerabilities in alert system (CVE-2012-4682 and CVE-2012-4683; (0.5+ only).
  • Do not consider inbound peers for outbound network group exclusion.
  • Apply BIP 30 checks to all blocks except the two historic violations.
  • Special-case the last alert to protect against the alert key ever being compromised.
  • Bitcoin-Qt: Ensure changes to preferred Bitcoin unit is immediately reflected in the GUI.
  • Bitcoin-Qt: Make sort and filters for transactions and labels case-insensitive.
  • Bitcoin-Qt: Override progress bar on platforms with segmented progress bars.
  • Bitcoin-Qt: Updated all translations from Transifex.
  • Fixed numerous typos and grammatical errors.
  • Resized the address book page to fix issue #1062 (0.6.0.10 and 0.6.4).
  • bitcoind: Fix building on MingW/OSX with USE_UPNP=- option (0.5+).
  • Fix build version generation failure when compiling on Windows (0.6.4).
  • Various other minor bug fixes, including test suite fixes and workaround for distcc build problems.



Thanks to everybody who contributed code or helped test this release:

Luke Dashjr
Sergio Lerner
Gavin Andresen
Philip Kaufmann
fanquake
xanatos
Wladimir J. van der Laan
Gregory Maxwell
Matt Corallo
Ricardo M. Correia
Michael Ford
Jeff Garzik
Pieter Wuille
Rune K. Svendsen
Stephane Glondu
38  Bitcoin / Pools / Decentralized mining protocol standard: getblocktemplate on: September 12, 2012, 12:08:56 AM
The main topic is under Mining software (miners).
39  Bitcoin / Mining software (miners) / Decentralized mining protocol standard: getblocktemplate (ASIC ready!) on: September 12, 2012, 12:06:49 AM
Since Eleuthria and slush have both recently announced their own developed-behind-closed-doors mining protocols, I felt it appropriate to make a thread here for end-user discussion of the "getblocktemplate" standard which they intend to compete with. As a poolserver author, a pool operator, a miner author, and a contributor to the reference client, my life is not improved by having yet another protocol to support, and what's bad for the authors of the infrastructure tools is also bad for all their users.

Getblocktemplate Features

  • Decentralized: the miners decide what they will mine, and make their own blocks - no more blindly giving up mining control to pool operators
  • ASIC-ready: miners can produce as much work as they need with a single request
  • Usable yesterday: Eligius has supported it since February, and more pools real soon
  • Solo mining: just point your miner to bitcoind 0.7 and mine by yourself (no bitcoind load issues)
  • Simple: the basic implementation requires only minimal block building
  • Extensible: extensions are available today for miners who wish to take more control over their miners, and future improvements can easily be added later

Documentation

See the new Bitcoin Wiki page for getblocktemplate, with lots of useful resources including end user and developer documentation.

Technical specifications:
Supported by... (post or PM me to get yours added)

Poolservers (providing getblocktemplate to miners):
Mining software:
Libraries for mining software:
Mining pools:
History/Background

Getblocktemplate's origins trace back to forrestv's getmemorypool JSON-RPC method for bitcoind. He created it so that his pool (P2Pool) could piggy-back on bitcoind so as to avoid harming the Bitcoin network (up to this point, it mined only empty blocks that never confirmed transactions). Having been fighting with scalability problems in pushpool/bitcoind for months on my pool (Eligius), I set out to implement a fast pool server using getmemorypool to do its own block production (this became Eloipool, this first open source makes-its-own-blocks poolserver). Other poolservers also implemented block creation using getmemorypool over the months following.

At about the same time, interest in decentralizing pooled mining became a hot topic. While BitPenny had initially released its own decentralized mining proxy months prior, P2Pool's implementation became rapidly popular. Anyone involved in Bitcoin mining protocols could see the need to move control of block creation back into the hands of the miners. Unfortunately, both BitPenny and P2Pool had used very pool-specific proprietary protocols to implement their decentralization. On the other hand, getmemorypool was almost a perfect fit for the task - it just lacked support for the now-ubiquitous pooled mining extensions that had developed around the getwork protocol over time.

In February, I implemented and deployed a first draft of getmemorypool mining support in Eloipool (and on Eligius) along with a proof-of-concept getwork proxy (now known as gmp-proxy), adding revisions as needed to function as a general-purpose decentralized mining protocol. After I had confirmed it was working, I documented and proposed it on the Bitcoin development mailing list for review on February 28th, where discussion began on what was missing and what needed to be changed or clarified. During the following few months, a number of others, both developers and testers, provided constructive criticism and suggestions, which were integrated into the standard. I also actively encouraged participation in the development of the standard among pool operators and poolserver authors, especially as it became necessary to move forward into the ASIC "mining generation". Eventually, it was decided it would be best to rename it to the more appropriate "getblocktemplate" name and drop backward compatibility with getmemorypool for simplicity. The standard was split into two pieces and the technical specification can be found in BIP 22 and BIP 23.

Support for getblocktemplate mining was announced for BFGMiner a week ago, and is currently functional (implementing the basics is quite easy) though not entirely optimized yet. A number of other software developers and pools have told me they intend to add getblocktemplate support soon.

(side note: all of this occurred before Eleuthria or slush made their protocols public, and neither of them chose to participate in the open development of the getblocktemplate standard)

Contribute

All that being said, there is always room for improvement. Reception of the proprietary proposals strongly suggests getblocktemplate is in desperate need of good miner-side example documentation. If you have the time to help bring getblocktemplate to everyone sooner in any way, please get in touch Smiley

Thanks to... (in no particular order)
  • Forrest Voight
  • Pieter Wuille
  • Jeff Garzik
  • Gregory Maxwell
  • Geir Harald Hansen
  • Gavin Andresen
  • Stefan Thomas
  • Michael Grønager
  • ...anyone else I forgot to mention
40  Bitcoin / Bitcoin Discussion / Poll: Do you use first-class messaging? on: August 23, 2012, 06:24:13 PM


First-class messaging, where the "Signatures" tab is part of the main window, was originally the default mode of operation for the Sign Message GUI function, but was relegated to the menu by default due to uncertainty of how much use it would get. I think 0.6 has proven it useful (for example, Bitcoin OTC now uses it for primary authentication) and it should be given first-class by default. However, others disagree and even want to remove the option (to make it first-class) entirely. Supposedly I'm the only one who wants message signatures to be first-class. I am hoping this poll will prove the opposite.

First-class messaging is a compile-time feature for Bitcoin-Qt 0.6. By adding the FIRST_CLASS_MESSAGING=1 option to qmake, builds will treat message signing the same way as other Bitcoin-Qt functions, instead of relegated to another dialog via the menu as it is by default. On Gentoo, users can enable it simply by installing with the "1stclassmsg" USE flag.

Note that the Verify Message will be available with both first-class and second-class messaging.
Pages: « 1 [2] 3 4 5 6 7 »
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!