Search content
Sort by

Showing 20 of 31 results by fairmuffin
Post
Topic
Board Altcoin Discussion
Re: Bitcoin Classic (XBT) - First version of Bitcoin By SATOSHI
by
fairmuffin
on 06/04/2025, 02:14:38 UTC
Interesting that the network hash is at 9PH. Following.
Post
Topic
Board Development & Technical Discussion
Re: How does getting the private key and nonce from a nonce reuse work?
by
fairmuffin
on 04/04/2025, 14:05:25 UTC
I suppose you're referring to this: https://allprivatekeys.com/random-vulnerability. Well, they explain the process there in detail.
The address you mention is listed there.
Yes but it didn't make sense to me a lot, since the example they gave was, for one transaction which had the same public key do the repeat.

Ok, summarizing for future reference, the possible vulnerabilities are:


1- A public key generates two signatures using the same nonce.

2- A public key generates a signature reusing a vulnerable nonce, as in case 1 (knowing the value of k  allows the derivation of the private key from all signatures that use it).

3- Signatures with vulnerable nonces that have low entropy (few bits).

4- Signatures where the differences between nonces are minimal.

5- Signatures generated with a predictable randomness system, such as Mersenne Twister.

That sums it up, yes. But how would you know that a signature has a vulnerable nonce with low entropy?
Post
Topic
Board Development & Technical Discussion
Re: How does getting the private key and nonce from a nonce reuse work?
by
fairmuffin
on 03/04/2025, 17:44:38 UTC
I suppose you're referring to this: https://allprivatekeys.com/random-vulnerability. Well, they explain the process there in detail.
The address you mention is listed there.

Yes but it didn't make sense to me a lot, since the example they gave was, for one transaction which had the same public key do the repeat.
So far, it repeated the R value from another address where the address in question was as output. Not sure what specific transactions they may have used then, to report this one as compromised.
You should be looking for transactions with inputs containing matching R-values that has the same public key.

In that address' case, these are the transactions that spent those outputs:
  • 9173e0721afdb0ef1abd76b7f1b73c584728156e9bb865bc97e47b444f171ec2
  • 637c73f6f1d7bc8c37f5b0de1c8a9cd16a4a58407a966b6088f891e0859d793d
Both first inputs have matching R-value in the signature and showing the same pubKey.

But those hashes are not the z-values that the script needs, it has to be re-created from the transaction data itself.
You can use any any RSZ tool (example) to conveniently get those values.
Then, use the shared Python script in this answer instead of that AI-generated script: https://bitcoin.stackexchange.com/a/110827, the output isn't WIF though.

That worked perfectly! Thank you a lot, that's exactly what I needed!
Post
Topic
Board Development & Technical Discussion
Re: How does getting the private key and nonce from a nonce reuse work?
by
fairmuffin
on 02/04/2025, 17:10:33 UTC
Code:
    tx_hash1 = "223d80bffcb8cc519f23d6e7795693c5c0b25a1f3c477a96632f875c067d2439"
    tx_hash2 = "8b044016b8307dd8aefe5dcb61cfac97c01122f578fc7e4192472c45405e0a74"
    -snip-
    # Convert transaction hashes to integers
    z1 = int(tx_hash1, 16)
    z2 = int(tx_hash2, 16)
This wont fix the core issue but just a pointer:

Those "tx_hash" aren't the Transaction IDs of the inputs that has the same R-value.
Since the code is pertaining to those as "z1" and "z2", it's meant to be the "message hash" (Z-value) of each transaction.

Thanks for looking! I can see that the address in question isn't as input but rather output; however, I am a bit at loss here since this address was reported as compromised back when the vulnerability was discovered. So far, it repeated the R value from another address where the address in question was as output. Not sure what specific transactions they may have used then, to report this one as compromised.
Post
Topic
Board Development & Technical Discussion
Topic OP
How does getting the private key and nonce from a nonce reuse work?
by
fairmuffin
on 01/04/2025, 18:29:54 UTC
Hi there!

So I've been researching about nonces lately, and found an address that reused many nonces across its transactions. The address is empty obviously; however, the Python code generated by Sonnet 3.7 doesn't seem to give the correct one, and I am not super sure what's the issue. Here's the code for instance:

Code:
import hashlib
import binascii
import base58
from ecdsa import SigningKey, SECP256k1, util

def extract_r_s_from_signature(signature):
    # Remove the [ALL] suffix if present
    signature = signature.split('[ALL]')[0]
   
    # The signature is in DER format
    # Extract the raw hex string
    hex_str = signature
   
    # Skip the first 4 bytes (30 + length + 02 + r_length) to get to r
    r_start = 8  # Skip '3044' and '0220'
    r_end = r_start + 64  # r is 32 bytes (64 hex chars)
    r_hex = hex_str[r_start:r_end]
   
    # After r, there's another 02 marker and length byte for s
    s_start = r_end + 4  # Skip '02' and '20' (or '21' if s has a leading zero)
    s_hex = hex_str[s_start:]
   
    return int(r_hex, 16), int(s_hex, 16)

def calculate_private_key(z1, z2, s1, s2, r):
    # Calculate private key from two different signatures with the same r value
    s1_minus_s2 = (s1 - s2) % SECP256k1.order
    z1_minus_z2 = (z1 - z2) % SECP256k1.order
   
    # Calculate the modular inverse
    s1_minus_s2_inv = pow(s1_minus_s2, -1, SECP256k1.order)
   
    # Calculate private key
    private_key = (z1_minus_z2 * s1_minus_s2_inv) % SECP256k1.order
    return private_key

def calculate_nonce(z, s, r, private_key):
    # Calculate the nonce (k) used in the signature
    r_inv = pow(r, -1, SECP256k1.order)
    nonce = (r_inv * ((s * private_key) - z)) % SECP256k1.order
    return nonce

def private_key_to_wif(private_key_hex, compressed=True):
    # Add version byte (0x80 for mainnet)
    extended_key = "80" + private_key_hex
   
    # Add compression flag if needed
    if compressed:
        extended_key += "01"
   
    # First round of SHA-256
    first_sha = hashlib.sha256(binascii.unhexlify(extended_key)).digest()
   
    # Second round of SHA-256
    second_sha = hashlib.sha256(first_sha).digest()
   
    # First 4 bytes of the second SHA-256 hash are the checksum
    checksum = binascii.hexlify(second_sha[:4]).decode()
   
    # Add the checksum to the extended key
    wif_key = extended_key + checksum
   
    # Convert to base58
    wif = base58.b58encode(binascii.unhexlify(wif_key)).decode()
   
    return wif

def verify_private_key(private_key_hex, public_key_hex):
    # Convert private key to SigningKey
    private_key_bytes = bytes.fromhex(private_key_hex)
    sk = SigningKey.from_string(private_key_bytes, curve=SECP256k1)
   
    # Get public key from private key
    vk = sk.get_verifying_key()
   
    # Adjust for compressed public key format
    computed_x = vk.pubkey.point.x()
    computed_y = vk.pubkey.point.y()
   
    # Check if y is even or odd for the compressed format prefix
    prefix = '02' if computed_y % 2 == 0 else '03'
    computed_compressed = prefix + hex(computed_x)[2:].zfill(64)
   
    return computed_compressed == public_key_hex

def main():
    # Data from the first signature
    address = "1BTrViTDXhWrdw5ErBWSyP5LdzYmeuDTr2"
    public_key = "03c88e78a3f105d99b7b0643f3cfca56bad5ffd2c8e1bc055d8c6d51475bc6b2cf"
    tx_hash1 = "223d80bffcb8cc519f23d6e7795693c5c0b25a1f3c477a96632f875c067d2439"
    r_value = "0c9a907263e472822c3afc1df2f87c95b9c8f9956ab891a3f7b3f482fc16814d"
    sig1 = "304402200c9a907263e472822c3afc1df2f87c95b9c8f9956ab891a3f7b3f482fc16814d022055dde0ae98f2ffad66a888c3ea22d8de0635062b65ff06b75191e4085035fa61"
   
    # Data from the second signature
    tx_hash2 = "8b044016b8307dd8aefe5dcb61cfac97c01122f578fc7e4192472c45405e0a74"
    sig2 = "304402200c9a907263e472822c3afc1df2f87c95b9c8f9956ab891a3f7b3f482fc16814d022061f915743d2dadd8856c53405a4fb8e1e0ee974a852dbc2c89649e790dd157ac"
   
    # Print the actual R-value for debugging
    print(f"Expected R-value: {r_value}")
   
    # Directly use the R-value from the input
    r = int(r_value, 16)
   
    # Extract S values from signatures - we'll only extract S since we know R
    _, s1 = extract_r_s_from_signature(sig1)
    _, s2 = extract_r_s_from_signature(sig2)
   
    print(f"S1: {hex(s1)[2:]}")
    print(f"S2: {hex(s2)[2:]}")
   
    # Convert transaction hashes to integers
    z1 = int(tx_hash1, 16)
    z2 = int(tx_hash2, 16)
   
    # Calculate the private key
    private_key = calculate_private_key(z1, z2, s1, s2, r)
    private_key_hex = hex(private_key)[2:].zfill(64)
   
    # Generate compressed WIF format private key (for Electrum)
    wif_compressed = private_key_to_wif(private_key_hex, compressed=True)
   
    # Calculate the nonce used
    nonce = calculate_nonce(z1, s1, r, private_key)
    nonce_hex = hex(nonce)[2:].zfill(64)
   
    # Verify if the calculated private key corresponds to the public key
    is_valid = verify_private_key(private_key_hex, public_key)
   
    print(f"Found private key (hex): {private_key_hex}")
    print(f"Compressed WIF for Electrum: {wif_compressed}")
    print(f"Nonce (k) used: {nonce_hex}")
    print(f"Private key verification: {'Successful' if is_valid else 'Failed'}")
   
    # Print instructions for using in Electrum
    print("\n=== ELECTRUM IMPORT INSTRUCTIONS ===")
    print("1. Open Electrum wallet")
    print("2. Go to Wallet -> Private Keys -> Import")
    print("3. Paste the Compressed WIF key")
    print("4. Electrum will scan for transactions and show any balance associated with this key")
    print("5. Transfer any funds to a new, secure wallet immediately")

if __name__ == "__main__":
    main()

Address involved:
1BTrViTDXhWrdw5ErBWSyP5LdzYmeuDTr2
Transaction 1 I chose: 223d80bffcb8cc519f23d6e7795693c5c0b25a1f3c477a96632f875c067d2439
Transaction 2 I chose: 8b044016b8307dd8aefe5dcb61cfac97c01122f578fc7e4192472c45405e0a74

What I am doing wrong?
Post
Topic
Board Announcements (Altcoins)
Re: [ANN] [PoW] Bitcoin Oil - Bitcoin On Steroids, Faster. [NO PREMINE] [LOW SUPPLY]
by
fairmuffin
on 26/03/2025, 13:41:30 UTC
Bitcoin Oil is now tradable on Mintrax exchange against USDT!

You can start trading here: https://mintrax.exchange/fr/exchange/dashboard?coin_pair=BTCO_USDT
Post
Topic
Board Development & Technical Discussion
Re: Electrum server on Windows: Fulcrum
by
fairmuffin
on 05/02/2025, 11:23:43 UTC
Finished syncing everything, including Fulcrum and now it's working; however, I am a bit disappointed of the speed. For example I am using:

Code:
FulcrumAdmin -p 8000 query

I am getting about an average of 1 response every 2-3 seconds. I expected this to be faster, is there a way to benefit of more performance? My setup should be doing better than this since I am running on my main desktop. Also is there a better explorer than BTC RPC Explorer? Especially for its API.
Post
Topic
Board Development & Technical Discussion
Re: Electrum server on Windows: Fulcrum
by
fairmuffin
on 28/01/2025, 10:20:18 UTC
So I synced Fulcrum from scratch and now it's stuck like this (for three hours now):

Code:
[2025-01-27 00:42:51.127] <Controller> Processed height: 606000, 68.8%, 18.0 blocks/sec, 38790.7 txs/sec, 136442.5 addrs/sec
[2025-01-27 00:42:51.637] <Controller> Processed 606011 new blocks with 479411650 txs (1178064770 inputs, 1278776241 outputs, 1810346733 addresses), verified ok.
[2025-01-27 00:42:51.637] <Controller> Initial sync ended, flushing and deleting UTXO Cache ...
[2025-01-27 00:42:51.637] <Controller> Storage UTXO Cache: Flushing to DB ...

Looking at the task manager it's not using disk space apparently, and just some memory (RAM) so I think it's safe to stay it's not doing anything? Also the Processed height: 606000, 68.8% makes me think that Fulcrum is aware that my Bitcoin node was stopped at a specific block height that's missing a lot of recent blocks. Not sure what to do with this thing now really, I'd be happy to have it work correctly with up toblock height 606,010 (which is where I have turned connect=0 for my node), but I don't know if that's doable.

You need to wait for flushing to finish. Painful and long, but it will pass. [1]

[1] https://bitcoin.stackexchange.com/questions/116776/why-is-there-a-need-to-flush-the-utxo-set-when-you-prune-blk-dat-and-rev-dat-f

I have restarted the process again but with utxo_cache = 0. I also left my node (while Fulcrum was closed) to sync up to block height 650,543 and then I stopped it again with connect=0. After around 9-11 hours, it's stuck here:

Code:
[2025-01-28 05:03:18.834] <Controller> Processed height: 641000, 72.8%, 5.92 blocks/sec, 13515.6 txs/sec, 58349.8 addrs/sec
[2025-01-28 05:06:15.310] <Controller> Processed height: 642000, 72.9%, 5.67 blocks/sec, 12933.7 txs/sec, 56693.3 addrs/sec
[2025-01-28 05:09:17.796] <Controller> Processed height: 643000, 73.0%, 5.48 blocks/sec, 11590.1 txs/sec, 53866.4 addrs/sec
[2025-01-28 05:11:55.158] <Controller> Processed height: 644000, 73.1%, 6.35 blocks/sec, 13634.1 txs/sec, 60727.5 addrs/sec
[2025-01-28 05:14:34.317] <Controller> Processed height: 645000, 73.2%, 6.28 blocks/sec, 14011.8 txs/sec, 61212.1 addrs/sec
[2025-01-28 05:17:14.472] <Controller> Processed height: 646000, 73.3%, 6.24 blocks/sec, 13882.7 txs/sec, 60763.5 addrs/sec
[2025-01-28 05:20:07.502] <Controller> Processed height: 647000, 73.4%, 5.78 blocks/sec, 12677.3 txs/sec, 56857.9 addrs/sec
[2025-01-28 05:22:45.779] <Controller> Processed height: 648000, 73.5%, 6.32 blocks/sec, 12950.7 txs/sec, 59231.9 addrs/sec
[2025-01-28 05:25:16.626] <Controller> Processed height: 649000, 73.7%, 6.63 blocks/sec, 13106.6 txs/sec, 59100.7 addrs/sec
[2025-01-28 05:27:57.033] <Controller> Processed height: 650000, 73.8%, 6.23 blocks/sec, 13441.1 txs/sec, 59500.2 addrs/sec
[2025-01-28 05:29:20.571] <Controller> Processed 650544 new blocks with 572976592 txs (1411013606 inputs, 1523970373 outputs, 2185459747 addresses), verified ok.

So even if I avoid having it flushing it, it does stop at the block height of my node, but then it does nothing.
Post
Topic
Board Development & Technical Discussion
Re: Electrum server on Windows: Fulcrum
by
fairmuffin
on 27/01/2025, 02:00:39 UTC
So I synced Fulcrum from scratch and now it's stuck like this (for three hours now):

Code:
[2025-01-27 00:42:51.127] <Controller> Processed height: 606000, 68.8%, 18.0 blocks/sec, 38790.7 txs/sec, 136442.5 addrs/sec
[2025-01-27 00:42:51.637] <Controller> Processed 606011 new blocks with 479411650 txs (1178064770 inputs, 1278776241 outputs, 1810346733 addresses), verified ok.
[2025-01-27 00:42:51.637] <Controller> Initial sync ended, flushing and deleting UTXO Cache ...
[2025-01-27 00:42:51.637] <Controller> Storage UTXO Cache: Flushing to DB ...

Looking at the task manager it's not using disk space apparently, and just some memory (RAM) so I think it's safe to stay it's not doing anything? Also the Processed height: 606000, 68.8% makes me think that Fulcrum is aware that my Bitcoin node was stopped at a specific block height that's missing a lot of recent blocks. Not sure what to do with this thing now really, I'd be happy to have it work correctly with up toblock height 606,010 (which is where I have turned connect=0 for my node), but I don't know if that's doable.
Post
Topic
Board Development & Technical Discussion
Re: Electrum server on Windows: Fulcrum
by
fairmuffin
on 26/01/2025, 19:47:34 UTC
I could not say 100% what is the problem, but one thing I can see is that the console doesn't say anything about the tcp server on port 50001 being started.
So it's not matching with what I've written back then:

After starting Fulcrum (start.bat) it might take an awful lot of time until everything is sync-ed. You may want to look for lines like:
Code:
[2023-02-27 21:42:48.964] Starting listener service for TcpSrv 127.0.0.1:50001 ...
[2023-02-27 21:42:48.965] Service started, listening for connections on 127.0.0.1:50001

or

Code:
[2023-02-27 22:03:32.758] <Controller> Block height 778553, up-to-date

Yeah I can confirm that it only tells me about listening for the HTTP thing, and not opening 50001. I think because Fulcrum still thinks there's more blocks that should be there. I've added maxblockheight=606010 to Fulcrum confguration file, and deleted Fulcrum data directory, I am syncing Fulcrum from scratch again and will see how this goes.

Post
Topic
Board Development & Technical Discussion
Re: Electrum server on Windows: Fulcrum
by
fairmuffin
on 26/01/2025, 19:30:10 UTC
Thanks for looking, I am proceeding with that; hopefully it won't take long, it took me a whole week to sync it :s

Unfortunately, it will take some time, so be prepared with patience.
After doing that, you should be ok, but feel free to post here again, after finishing the re-indexing process.

I have just let my bitcoin code sync up to 606010 and added this line to the Bitcoin config file:

Code:
connect=0

As I don't need to reach current block height. Fulcrum seems to be fully synced, as I am getting this:

Code:
[2025-01-26 18:20:49.006] Loading database ...
[2025-01-26 18:20:49.202] DB memory: 512.00 MiB
[2025-01-26 18:20:49.206] Coin: BTC
[2025-01-26 18:20:49.207] Chain: main
[2025-01-26 18:20:49.207] Verifying headers ...
[2025-01-26 18:20:49.727] Initializing header merkle cache ...
[2025-01-26 18:20:49.963] Checking tx counts ...
[2025-01-26 18:20:51.178] 479411650 total transactions
[2025-01-26 18:20:51.179] UTXO set: 63772347 utxos, 5356.877 MB
[2025-01-26 18:20:51.194] DB version: v3
[2025-01-26 18:20:51.204] BitcoinDMgr: starting 3 bitcoin RPC clients ...
[2025-01-26 18:20:51.204] BitcoinDMgr: started ok
[2025-01-26 18:20:51.205] Stats HTTP: starting 1 server ...
[2025-01-26 18:20:51.205] Starting listener service for HttpSrv 127.0.0.1:8080 ...
[2025-01-26 18:20:51.209] Service started, listening for connections on 127.0.0.1:8080

However, I am not sure how to use it to query balances for examples? I tried using it with BTC RPC Explorer but I get this error:

Code:
[2025-01-26 18:52:41.213] <HttpSrv 127.0.0.1:8080> Client: 127.0.0.1:49646; Invalid request: {"id": 1, "method": "blockchain.address.get_balance", "params": ["1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa"]}

I also tried to use it as an Electrum server, but then the console prints:

Code:
[2025-01-26 20:24:18.297] <HttpSrv 127.0.0.1:8080> Client: 127.0.0.1:62656; Invalid request:

What am I doing wrong?
Post
Topic
Board Development & Technical Discussion
Re: Electrum server on Windows: Fulcrum
by
fairmuffin
on 22/01/2025, 17:14:53 UTC
I had deleted the data dir for Fulcrum and still the same issue. Here's my Fulcrum.conf:

Code:
datadir = G:\FulcrumData_MainNet
bitcoind = 127.0.0.1:8332
rpcuser = randomuser
rpcpassword = randompass
tcp = 127.0.0.1:50001
peering = false
announce = false
public_tcp_port = 50001
admin = 8000
stats = 8080
db_max_open_files = 80
fast-sync = 8000

I think you 'll need to re-index Bitcoin Core.
Make sure to stop fulcrum before doing it.
I don't run fulcrum, unfortunately, but the error seems straightforward. Especially since it reads some blocks but it fails on the rest.



Thanks for looking, I am proceeding with that; hopefully it won't take long, it took me a whole week to sync it :s
Post
Topic
Board Development & Technical Discussion
Re: Electrum server on Windows: Fulcrum
by
fairmuffin
on 22/01/2025, 17:07:58 UTC
Block not found on disk

I didn't encounter this error, but I've looked up on the internet.
The answer from here ( https://bitcoin.stackexchange.com/a/79749 ) tells that you probably need a reindex in your bitcoind.

Thanks, I found it too but I found it was weird and maybe not specific for my case? Cause it only does it for the latest block each time (so for example just right now 880,375, it is doing it for it). But I'll reindex and report back here.

My Bitcoin node is now fully synced; however, I keep getting errors on Fulcrum, related to the latest block (while it was syncing at just 5%):

<...>

Can someone please advise? I have txindex enabled, and pruning is disabled, and I do have enough diskspace where Bitcoin data and Fulcrum data is stored. I am not sure what's wrong.

Probably your databasei is broken and you need a rescan.

Before you do it, can you post your fulcrum.conf please? Omit anything you don't wanna share.

I had deleted the data dir for Fulcrum and still the same issue. Here's my Fulcrum.conf:

Code:
datadir = G:\FulcrumData_MainNet
bitcoind = 127.0.0.1:8332
rpcuser = randomuser
rpcpassword = randompass
tcp = 127.0.0.1:50001
peering = false
announce = false
public_tcp_port = 50001
admin = 8000
stats = 8080
db_max_open_files = 80
fast-sync = 8000
Post
Topic
Board Development & Technical Discussion
Re: Electrum server on Windows: Fulcrum
by
fairmuffin
on 22/01/2025, 16:44:30 UTC
My Bitcoin node is now fully synced; however, I keep getting errors on Fulcrum, related to the latest block (while it was syncing at just 5%):

Code:
[2025-01-22 17:43:31.155] <Task.DL 59574 -> 880371> getblock: error response: {"error":{"code":-1,"message":"Block not found on disk"},"id":4318,"result":null}
[2025-01-22 17:43:31.156] <Task.DL 59575 -> 880371> getblock: error response: {"error":{"code":-1,"message":"Block not found on disk"},"id":4317,"result":null}
[2025-01-22 17:43:31.157] <Task.DL 59575 -> 880371> getblock: error response: {"error":{"code":-1,"message":"Block not found on disk"},"id":4316,"result":null}
[2025-01-22 17:43:31.158] <Task.DL 59574 -> 880371> getblock: error response: {"error":{"code":-1,"message":"Block not found on disk"},"id":4319,"result":null}
[2025-01-22 17:43:33.139] <Controller> Block height 880371, downloading new blocks ...
[2025-01-22 17:43:33.139] <Controller> utxo-cache: Enabled; UTXO cache size set to 8000000000 bytes (available physical RAM: 34017689600 bytes)
[2025-01-22 17:43:33.199] <Task.DL 59570 -> 880371> getblock: error response: {"error":{"code":-1,"message":"Block not found on disk"},"id":4345,"result":null}
[2025-01-22 17:43:33.199] <Task.DL 59572 -> 880371> getblock: error response: {"error":{"code":-1,"message":"Block not found on disk"},"id":4347,"result":null}
[2025-01-22 17:43:33.199] <Task.DL 59569 -> 880371> getblock: error response: {"error":{"code":-1,"message":"Block not found on disk"},"id":4346,"result":null}
[2025-01-22 17:43:33.200] <Controller> Task errored: Task.DL 59570 -> 880371, error: Block not found on disk
[2025-01-22 17:43:33.200] <Task.DL 59573 -> 880371> getblock: error response: {"error":{"code":-1,"message":"Block not found on disk"},"id":4349,"result":null}
[2025-01-22 17:43:33.204] <Task.DL 59578 -> 880371> getblock: error response: {"error":{"code":-1,"message":"Block not found on disk"},"id":4352,"result":null}
[2025-01-22 17:43:33.204] <Task.DL 59577 -> 880371> getblock: error response: {"error":{"code":-1,"message":"Block not found on disk"},"id":4354,"result":null}
[2025-01-22 17:43:33.204] <Task.DL 59576 -> 880371> getblock: error response: {"error":{"code":-1,"message":"Block not found on disk"},"id":4353,"result":null}
[2025-01-22 17:43:33.204] <Task.DL 59580 -> 880371> getblock: error response: {"error":{"code":-1,"message":"Block not found on disk"},"id":4355,"result":null}
[2025-01-22 17:43:33.205] <Task.DL 59581 -> 880371> getblock: error response: {"error":{"code":-1,"message":"Block not found on disk"},"id":4356,"result":null}
[2025-01-22 17:43:33.205] <Controller> Failed to synch blocks and/or mempool
[2025-01-22 17:43:33.205] <Controller> Initial sync ended, flushing and deleting UTXO Cache ...
[2025-01-22 17:43:33.205] <Controller> Storage UTXO Cache: Flushing to DB ...
[2025-01-22 17:43:33.206] <Task.DL 59585 -> 880371> getblock: error response: {"error":{"code":-1,"message":"Block not found on disk"},"id":4358,"result":null}
[2025-01-22 17:43:33.206] <Task.DL 59579 -> 880371> getblock: error response: {"error":{"code":-1,"message":"Block not found on disk"},"id":4357,"result":null}
[2025-01-22 17:43:33.206] <Task.DL 59583 -> 880371> getblock: error response: {"error":{"code":-1,"message":"Block not found on disk"},"id":4359,"result":null}
[2025-01-22 17:43:33.206] <Task.DL 59582 -> 880371> getblock: error response: {"error":{"code":-1,"message":"Block not found on disk"},"id":4361,"result":null}
[2025-01-22 17:43:33.207] <Task.DL 59586 -> 880371> getblock: error response: {"error":{"code":-1,"message":"Block not found on disk"},"id":4362,"result":null}
[2025-01-22 17:43:33.207] <Task.DL 59587 -> 880371> getblock: error response: {"error":{"code":-1,"message":"Block not found on disk"},"id":4360,"result":null}
[2025-01-22 17:43:33.208] <Task.DL 59584 -> 880371> getblock: error response: {"error":{"code":-1,"message":"Block not found on disk"},"id":4363,"result":null}
[2025-01-22 17:43:33.208] <Task.DL 59590 -> 880371> getblock: error response: {"error":{"code":-1,"message":"Block not found on disk"},"id":4364,"result":null}
[2025-01-22 17:43:33.209] <Task.DL 59589 -> 880371> getblock: error response: {"error":{"code":-1,"message":"Block not found on disk"},"id":4365,"result":null}
[2025-01-22 17:43:33.209] <Task.DL 59592 -> 880371> getblock: error response: {"error":{"code":-1,"message":"Block not found on disk"},"id":4368,"result":null}
[2025-01-22 17:43:33.209] <Task.DL 59588 -> 880371> getblock: error response: {"error":{"code":-1,"message":"Block not found on disk"},"id":4367,"result":null}
[2025-01-22 17:43:33.209] <Task.DL 59591 -> 880371> getblock: error response: {"error":{"code":-1,"message":"Block not found on disk"},"id":4366,"result":null}
[2025-01-22 17:43:33.213] <Task.DL 59575 -> 880371> getblock: error response: {"error":{"code":-1,"message":"Block not found on disk"},"id":4383,"result":null}
[2025-01-22 17:43:33.213] <Task.DL 59575 -> 880371> getblock: error response: {"error":{"code":-1,"message":"Block not found on disk"},"id":4382,"result":null}
[2025-01-22 17:43:33.214] <Task.DL 59571 -> 880371> getblock: error response: {"error":{"code":-1,"message":"Block not found on disk"},"id":4381,"result":null}
[2025-01-22 17:43:33.214] <Task.DL 59575 -> 880371> getblock: error response: {"error":{"code":-1,"message":"Block not found on disk"},"id":4385,"result":null}
[2025-01-22 17:43:33.214] <Task.DL 59574 -> 880371> getblock: error response: {"error":{"code":-1,"message":"Block not found on disk"},"id":4389,"result":null}
[2025-01-22 17:43:33.215] <Task.DL 59571 -> 880371> getblock: error response: {"error":{"code":-1,"message":"Block not found on disk"},"id":4386,"result":null}

Can someone please advise? I have txindex enabled, and pruning is disabled, and I do have enough diskspace where Bitcoin data and Fulcrum data is stored. I am not sure what's wrong.
Post
Topic
Board Development & Technical Discussion
Re: Electrum server on Windows: Fulcrum
by
fairmuffin
on 15/01/2025, 23:01:16 UTC
Please do let me know if BTC RPC Explorer and Fulcrum work together!

I didn't use Fulcrum with a block explorer so I can't confirm that. But it should work.
After giving up WSL (including electrs and BTC RPC Explorer) I no longer reinstalled a block explorer. I am no longer that much active and I also had much less transactions (hence less to check). So what I'll tell are just theories:

* there's a good chance may not be able to connect as long as Bitcoin Core and Fulcrum are not fully synced; I'd expect you get data only after you see the lines I wrote about in the topic start post

* tcp://localhost:50001 looks good to me, I also use 127.0.0.1:50001:t for my electrum when I connect to Fulcrum


* I did use BTC RPC Explorer with Electrs (see this) for quite a lot of time, but sadly last time I've tried something from my steps no longer worked and I gave up. But I think that since then the Electrs doc is more complete and I've avoided Docker for personal reasons and that may be the easy way.

* I recommend Bitcoin core's blocks\index, chainstate, indexes\txindex and Fulcrum's data folder to be on SSD, else it'll be slow

Thanks for sharing! Yes, both are on SSD, it's just that my connection sucks big time (average 800ko/s) on Firefox, so I suppose with P2P it may be less than that.
I've used Fulcrum but can't remember why I it didn't work so I gave up. It could've been down to my SSD or OS config so you'll have to troubleshoot until it's working. Did you locate alternatives ?

Any ideas? Haven't been able to figure it out yet.


Haven't been able to figure out an alternative yet. WSL doesn't work for me on Windows 11, and I tried many fixes including reading online and using AI, but it never seemed to be fixed. I don't want to use Virtualbox or anything else, so I chose Fulcrum to stay within Windows and apparently I have to wait until both Bitcoin Core and Fulcrum are fully synced, which with my connection will take days.

TL;DR
Local instances of BTC RPC Explorer and mempool.space work nicely with Fulcrum.

I'll have to dig out how it's configured as I've used it with RaspiBlitz where you simply install it (ok, switching from electrs to Fulcrum needs a tweak or two in earlier versions of RaspiBlitz).

I've used Fulcrum in my RaspiBlitz node setup instead of electrs and had local instances of blockchain explorers like BTC RPC Explorer aka bitcoinexplorer.org and mempool.space. It has worked like a charm until I ran out of space on the 1TB storage media (Fulcrum takes considerably more space than electrs).

From my own experience electrs is significantly slower for large address histories than Fulcrum and this was for me the main driver to switch from electrs to Fulcrum.

Why am I talking of past stuff? Well, I've been a bit lazy to upgrade my RaspiBlitz node and setup a more recent version of it. I also wanted to see how RaspiBlitz evolves (I started with v1.7.0 upgraded a few versions from there and tweaked it here and there to my liking... until it broke). As I've another node with electrs as Electrum server and BTC RPC Explorer and local instance of mempool.space there wasn't much pressure to fix my RaspiBlitz as soon as possible, so I procrastinated...

As far as I can tell from syncing my Fulcrum: it took a while and syncing it is more time consuming than with electrs. But my Bitcoin Core was in sync back then. Fulcrum definitely won't respond to queries as long as it isn't fully synced and as long as the Bitcoin Core it talks to isn't synced either.


Yes, I have Bitcoin Core running with txindex=1, so no pruning; however, my connection is so slow so I am still only at blockheight 462,528.

The issue might not be your internet connection but additionally maybe too small value for dbcache due to not enough free RAM available. On what kind of storage media is your blocks and chainstate directories located, hopefully a SSD?

Thanks for sharing! This definitely gives me hope! Yes, I am storing all that on SSD, my setup doesn't have any HDD, just some Sata SSD's and some M2 SSD's. My setup ram is 64 GO so all good in that, it's just that the connection is awful. Looking forward to be fully synced within a few days, does Fulcrum + BTC RPC Explorer work both from the box or need some tweaking? I indeed need fast transaction history.
Post
Topic
Board Development & Technical Discussion
Re: Electrum server on Windows: Fulcrum
by
fairmuffin
on 15/01/2025, 16:29:50 UTC
Also I want to use it on Bitcoin BTC, while the documentation mentions Bitcoin Cash, which confuses me further (https://electrum-cash-protocol.readthedocs.io/en/latest/index.html).

You can definitely use it for the real Bitcoin.

Have you installed Bitcoin Core? Do you, perhaps, run a node using pruning?

Finally, for the RPC explorer, I think it works with Fulcrum, but I need to check to be sure. I 'll do in the next hours and let you know.

Yes, I have Bitcoin Core running with txindex=1, so no pruning; however, my connection is so slow so I am still only at blockheight 462,528. Since BTC RPC Explorer allows the use of an Electrum server, I have this in my config file for it (which is the address of Fulcrum):

Code:
BTCEXP_ADDRESS_API=electrum
BTCEXP_ELECTRUM_SERVERS=tcp://localhost:50001

But it's refusing connections when BTC RPC Explorer tries to use it; perhaps because my Bitcoin Core is still not fully synced? Please do let me know if BTC RPC Explorer and Fulcrum work together!

Post
Topic
Board Development & Technical Discussion
Re: Electrum server on Windows: Fulcrum
by
fairmuffin
on 15/01/2025, 13:52:28 UTC
I've downloaded it and it started syncing; however, I don't have a single idea on how to use it. I wanted to have a local Bitcoin blockchain explorer, and BTC RPC Explorer(https://github.com/janoside/btc-rpc-explorer/) lacked address indexing, which I need (to be able to find all input and output transactions of any X address). Does Fulcrum has something similiar? I am not sure where to browse the JSON API, the documentation doesn't mention the URL used.

Also I want to use it on Bitcoin BTC, while the documentation mentions Bitcoin Cash, which confuses me further (https://electrum-cash-protocol.readthedocs.io/en/latest/index.html).

Any ideas? Haven't been able to figure it out yet.
Post
Topic
Board Development & Technical Discussion
Re: Solving ECDLP with Kangaroos: Part 1 + 2 + RCKangaroo
by
fairmuffin
on 31/12/2024, 13:48:31 UTC
Hi all,

Here is my research about using kangaroo methods to solve ECDLP, Part 1.
Open source:  https://github.com/RetiredC/Kang-1

This software demonstrates various ways to solve the ECDLP using Kangaroos.
The required number of operations is approximately K * sqrt(range), where K is a coefficient that depends on the method used.
This software demonstrates five methods:

1 - Classic. The simplest method. There are two groups of kangaroos: tame and wild.
As soon as a collision between any tame and wild kangaroos happens, the ECDLP is solved.
In practice, K is approximately 2.10 for this method.

2 - 3-way. A more advanced method. There are three groups of kangaroos: tame, wild1, and wild2.
As soon as a collision happens between any two types of kangaroos, the ECDLP is solved.
In practice, K is approximately 1.60 for this method.

3 - Mirror. This method uses two groups of kangaroos and the symmetry of the elliptic curve to improve K.
Another trick is to reduce the range for wild kangaroos.
In practice, K is approximately 1.30 for this method.
The main issue with this method is that the kangaroos loop continuously.

4 - SOTA. This method uses three groups of kangaroos and the symmetry of the elliptic curve.
In practice, K is approximately 1.15 for this method. The main issue is the same as in the Mirror method.
I couldn’t find any papers about this method, so let's assume that I invented it Smiley

5 - SOTA+. This method is the same as SOTA, but also uses cheap second point.
When we calculate "NextPoint = PreviousPoint + JumpPoint" we can also quickly calculate "PreviousPoint - JumpPoint" because inversion is the same.
If inversion calculation takes a lot of time, this second point is cheap for us and we can use it to improve K.
Using cheap point costs only (1MUL+1SQR)/2. K is approximately 1.02 for this method (assuming cheap point is free and not counted as 1op).
Again, I couldn’t find any papers about this method applied to Kangaroo, so let's assume that I invented it.

Important note: this software handles kangaroo looping in a very simple way.
This method is bad for large ranges higher than 100 bits.
Next part will demonstrate a good way to handle loops.

PS. Please don't post any stupid messages here, I will remove them; also don't post AI-generated messages and other spam.

Been interested about this puzzle for more than a week now; unfortunately I don't have the gear required (I do own two desktops, one i9 14900k with an RTX 2060 and an RTX 2080 and another with i9 10900k with an RTX 3050) and the speeds I got are very good, but won't do much.

Thank you a lot for the work you are doing, I do wonder if you had implemented or found a way to implement this new method? https://arxiv.org/html/2409.08784v1
Post
Topic
Board Announcements (Altcoins)
Re: [ANN] [PoW] Bitcoin Oil - Bitcoin On Steroids, Faster. [NO PREMINE] [LOW SUPPLY]
by
fairmuffin
on 11/11/2024, 19:27:45 UTC
https://discord.gg/T9jVt2RC

Invalid discord invite

Should be working, that's the correct link that people are using and still joining! Try disconnecting/reconnecting on Discord before joining.

Added Epool to the site. We'll be integrated by Caldera hopefully soon! Mining activity is soaring, at 6PH/s on the network!

Can you make another discord invite? Still giving me an invalid.

Sorry for the late replies everyone, here's an updated and working Discord invite link: https://discord.gg/UwwyPfEyAP

The website was updated as well, thank you for the feedback Smiley
Post
Topic
Board Announcements (Altcoins)
Re: [ANN] [PoW] Bitcoin Oil - Bitcoin On Steroids, Faster. [NO PREMINE] [LOW SUPPLY]
by
fairmuffin
on 27/10/2024, 13:18:33 UTC
https://discord.gg/T9jVt2RC

Invalid discord invite

Added Epool to the site. We'll be integrated by Caldera hopefully soon! Mining activity is soaring, at 6PH/s on the network!