<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <updated></updated>
  <generator>https://nostr.ae</generator>

  <title>Nostr notes by </title>
  <author>
    <name></name>
  </author>
  <link rel="self" type="application/atom+xml" href="https://nostr.ae/npub1ssutaataqhl7xxp4lw6jutuhfuq5x48cf0xsxpgsxdkxkf9rl9wqnk53fg.rss" />
  <link href="https://nostr.ae/npub1ssutaataqhl7xxp4lw6jutuhfuq5x48cf0xsxpgsxdkxkf9rl9wqnk53fg" />
  <id>https://nostr.ae/npub1ssutaataqhl7xxp4lw6jutuhfuq5x48cf0xsxpgsxdkxkf9rl9wqnk53fg</id>
  <icon></icon>
  <logo></logo>




  <entry>
    <id>https://nostr.ae/nevent1qqsr2q5yf8qtvycm70p83ha9vwsuejag9z8atxuwvatxejmx65sdv6czyzzr30h405zllcccxham2t30ja8szs65lp9u6qc9zqekc6ey50u4c3t6dm5</id>
    
      <title type="html">📅 Original date posted:2015-09-19 📝 Original message:We ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsr2q5yf8qtvycm70p83ha9vwsuejag9z8atxuwvatxejmx65sdv6czyzzr30h405zllcccxham2t30ja8szs65lp9u6qc9zqekc6ey50u4c3t6dm5" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrksl9svrey0pr2467m39ph2y4ykecgykf08gnrqpz5yedkcx3gnglq478j&#39;&gt;nevent1q…478j&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-09-19&lt;br/&gt;📝 Original message:We need to distinguish between two different things here:&lt;br/&gt;&lt;br/&gt;1) A 51% attack, where the majority of mining power is *malicious* (hence “attack”)&lt;br/&gt;&lt;br/&gt;and&lt;br/&gt;&lt;br/&gt;2) A fork that exists because of a disagreement in the network, with total mining power split in two camps, each camp mining peacefully on their own chain&lt;br/&gt;&lt;br/&gt;These are two very different scenarios.&lt;br/&gt;&lt;br/&gt;Some claim that including the UTXO set hash in the block creates a vulnerability where miners can include the wrong UTXO hash, and mine on that, but this is only possible if a 51% attack is in effect. And if a 51% attack is in effect, it’s a moot point, because Bitcoin is useless anyway, because that 51% malicious mining power could just as well be used for mining empty blocks on top of the official chain. Or blocks containing randomly generated transactions, without confirming any legitimate transactions. This is why we say that a majority of honest miners is a hard requirement for Bitcoin. A majority of dishonest miners can only be circumvented through centralisation, and then we don’t have Bitcoin any longer.&lt;br/&gt;&lt;br/&gt;Scenario 2 is unproblematic regardless of whether we include the UTXO hash in the block (and make it consensus-critical) or not, since the majority mining power on either chain isn’t malicious.&lt;br/&gt;&lt;br/&gt;It is correct that if you’re a full node, and a 51% attack is in effect, you are able to verify that miners are honest (ie. you know whether a 51% attack is in effect or not). But this doesn’t change the fact that the Bitcoin network is unreliable, at best, when a majority of mining power is used for malicious purposes.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;/Rune&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; On 19 Sep 2015, at 04:30, Justus Ranvier via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On 18/09/15 15:17, Rune Kjær Svendsen via bitcoin-dev wrote:&lt;br/&gt;&amp;gt;&amp;gt; Bitcoin does not function if the majority of mining power is dishonest. There is no way around that. It’s how proof-of-work functions.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; None of those statements are true.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; If a majority of Bitcoin miners are mining invalid blocks, then they&lt;br/&gt;&amp;gt; aren&amp;#39;t Bitcoin miners any more and are no longer relevant to the Bitcoin&lt;br/&gt;&amp;gt; consensus.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; There does exist a problem that light clients aren&amp;#39;t always able to tell&lt;br/&gt;&amp;gt; the difference between chains that are valid and chains that are not&lt;br/&gt;&amp;gt; valid, but it&amp;#39;s is possible to create simple proofs that would do so:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;a href=&#34;https://gist.github.com/justusranvier/451616fa4697b5f25f60&#34;&gt;https://gist.github.com/justusranvier/451616fa4697b5f25f60&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; If those changes would be implemented, then any node that knew a chain&lt;br/&gt;&amp;gt; was invalid could produce a compact proof that anyone else in the&lt;br/&gt;&amp;gt; network could verify, regardless of how much proof of work was used to&lt;br/&gt;&amp;gt; create the invalid chain.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Committed UTXO sets would need safe to rely upon if a similar set of&lt;br/&gt;&amp;gt; proofs that a particular set was invalid existed.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; -- &lt;br/&gt;&amp;gt; Justus Ranvier&lt;br/&gt;&amp;gt; Open Bitcoin Privacy Project&lt;br/&gt;&amp;gt; &lt;a href=&#34;http://www.openbitcoinprivacyproject.org/&#34;&gt;http://www.openbitcoinprivacyproject.org/&lt;/a&gt;&lt;br/&gt;&amp;gt; justus at openbitcoinprivacyproject.org&lt;br/&gt;&amp;gt; E7AD 8215 8497 3673 6D9E 61C4 2A5F DA70 EAD9 E623&lt;br/&gt;&amp;gt; &amp;lt;0xEAD9E623.asc&amp;gt;_______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;
    </content>
    <updated>2023-06-07T17:40:59Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsxa3akkynwn8ucvnuuux0qc7zavgj9zzvszrj8kuts4ru8pch9rmszyzzr30h405zllcccxham2t30ja8szs65lp9u6qc9zqekc6ey50u4c2tmxen</id>
    
      <title type="html">📅 Original date posted:2015-09-18 📝 Original message:There ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxa3akkynwn8ucvnuuux0qc7zavgj9zzvszrj8kuts4ru8pch9rmszyzzr30h405zllcccxham2t30ja8szs65lp9u6qc9zqekc6ey50u4c2tmxen" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsztaavs45zggz3mnx73vljwxymn3pvywdaeqrjyyun0mvmwx9ct9cgklvxk&#39;&gt;nevent1q…lvxk&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-09-18&lt;br/&gt;📝 Original message:There are a couple of points I’d like to address.&lt;br/&gt;&lt;br/&gt;Firstly, yes, &amp;gt;50% attacks are a problem for Bitcoin. Bitcoin does not function if the majority of mining power is dishonest. There is no way around that. It’s how proof-of-work functions. And if we lose proof-of-work, we lose Bitcoin.&lt;br/&gt;&lt;br/&gt;Secondly, I’m not suggesting that UTXO set hashes *replace* block hashes, or even that it should be in the block header (probably in the coinbase somewhere). I suggest it as an *addition* to the existing consensus rules. Full nodes can still verify the chain with the added step of hashing the UTXO set for every block. Of course, this can easily be deferred to after proof-of-work has been verified already, such that no work is wasted. Unless a 51% attack is in effect. But I argue that this is a moot point, since Bitcoin is useless anyway under such circumstances.&lt;br/&gt;&lt;br/&gt;Lastly, I’m not suggesting miners discard the blockchain history. A miner has an incentive to be absolutely sure that the chain he’s building on is the right one. If he’s wrong, he loses money/income. There’s simply no reason for a professional miner *not* to do the full initial sync, which only needs to be done once. Non-miners, who just want to check the balance of their wallet, however, really don’t need to retrieve information about Hal Finney sending bitcoins to Satoshi in 2010. In any case, this practice isn’t sustainable.&lt;br/&gt;&lt;br/&gt;In the end, it isn’t possible to control whether a miner verifies the entire blockchain anyway (anyone can send the UTXO set over the wire). Not letting the proof-of-work cover the UTXO hash doesn’t solve this problem, it only makes it impossible to know whether a given UTXO set is the one that the majority is mining on without retrieving the entire blockchain, and doing the verification yourself. People can choose to skip that regardless of what we do.&lt;br/&gt;&lt;br/&gt;Furthermore, all nodes have the option of deciding which level of security they want. We’re not lessening security of the protocol, we’re strengthening the security of something that’s already possible to do (build on top of an unverified blockchain), but we’d rather want that people not do.&lt;br/&gt;&lt;br/&gt;/Rune&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; On 18 Sep 2015, at 21:43, Patrick Strateman via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Full nodes using UTXO set commitments is a change to the bitcoin&lt;br/&gt;&amp;gt; security model.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Currently an attacker with &amp;gt;50% of the network hashrate can rewrite history.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; If full nodes rely on UTXO set commitments such an attacker could create&lt;br/&gt;&amp;gt; an infinite number of bitcoins (as in many times more than the current&lt;br/&gt;&amp;gt; 21 million bitcoin limit).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Before we consider mechanisms for UTXO set commitments, we should&lt;br/&gt;&amp;gt; seriously discuss whether the security model reduction is reasonable.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On 09/18/2015 12:05 PM, Rune Kjær Svendsen via bitcoin-dev wrote:&lt;br/&gt;&amp;gt;&amp;gt; Currently, when a new node wants to join the network, it needs to retrieve the entire blockchain history, starting from January 2009 and up until now, in order to derive a UTXO set that it can verify new blocks/transactions against. With a blockchain size of 40GB and a UTXO size of around 1GB, the extra bandwidth required is significant, and will keep increasing indefinitely. If a newly mined block were to include the UTXO set hash of the chain up until the previous block — the hash of the UTXO set on top of which this block builds — then new nodes, who want to know whether a transaction is valid, would be able to acquire the UTXO set in a trustless manner, by only verifying proof-of-work headers, and knowing that a block with an invalid UTXO set hash would be rejected.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; I’m not talking about calculating a complicated tree structure from the UTXO set, which would put further burden on already burdened Bitcoin Core nodes. We simply include the hash of the current UTXO set in a newly created block, such that the transactions in the new block build *on top* of the UTXO set whose hash is specified. This actually alleviates Bitcoin Core nodes, as it will now become possible for nodes without the entire blockchain to answer SPV queries (by retrieving the UTXO set trustlessly and using this to answer queries). It also saves bandwidth for Bitcore Core nodes, who only need to send roughly 1GB of data, in order to synchronise a node, rather than 40GB&#43;. I will continue to run a full Bitcoin Core node, saving the entire blockchain history, but it shouldn’t be a requirement to hold the entire transaction history in order to start verifying new transactions.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; As far as I can see, this also forces miners to actually maintain an UTXO set, rather than just build on top of the chain with the most proof-of-work. Producing a UTXO set and verifying a block against a chain is the same thing, so by including the hash of the UTXO set we force miners to verify the block that they want to build on top of.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; Am I missing something obvious, because as far as I can see, this solves the problem of quadratic time complexity for initial sync: &lt;a href=&#34;http://www.youtube.com/watch?v=TgjrS-BPWDQ&amp;amp;t=2h02m12s&#34;&gt;http://www.youtube.com/watch?v=TgjrS-BPWDQ&amp;amp;t=2h02m12s&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; The only added step to verifying a block is to hash the UTXO set. So it does require additional computation, but most modern CPUs have a SHA256 throughput of around 500 MB/s, which means it takes only two seconds to hash the UTXO set. And this can be improved further (GPUs can do 2-3 GB/s). A small sacrifice for the added ease of initial syncing, in my opinion.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; /Rune&lt;br/&gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;
    </content>
    <updated>2023-06-07T17:40:56Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqswnpkel3ur59hy0fz7zzcz3zjjg7vruunt8qqnrpwa0hdz23h89pszyzzr30h405zllcccxham2t30ja8szs65lp9u6qc9zqekc6ey50u4cpe3na5</id>
    
      <title type="html">📅 Original date posted:2015-09-18 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqswnpkel3ur59hy0fz7zzcz3zjjg7vruunt8qqnrpwa0hdz23h89pszyzzr30h405zllcccxham2t30ja8szs65lp9u6qc9zqekc6ey50u4cpe3na5" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8ltd4x7xpc3883nzaukw65t54r088hyv4q63adnljhnc9lfuuwhgx4cp5q&#39;&gt;nevent1q…cp5q&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-09-18&lt;br/&gt;📝 Original message:Currently, when a new node wants to join the network, it needs to retrieve the entire blockchain history, starting from January 2009 and up until now, in order to derive a UTXO set that it can verify new blocks/transactions against. With a blockchain size of 40GB and a UTXO size of around 1GB, the extra bandwidth required is significant, and will keep increasing indefinitely. If a newly mined block were to include the UTXO set hash of the chain up until the previous block — the hash of the UTXO set on top of which this block builds — then new nodes, who want to know whether a transaction is valid, would be able to acquire the UTXO set in a trustless manner, by only verifying proof-of-work headers, and knowing that a block with an invalid UTXO set hash would be rejected.&lt;br/&gt;&lt;br/&gt;I’m not talking about calculating a complicated tree structure from the UTXO set, which would put further burden on already burdened Bitcoin Core nodes. We simply include the hash of the current UTXO set in a newly created block, such that the transactions in the new block build *on top* of the UTXO set whose hash is specified. This actually alleviates Bitcoin Core nodes, as it will now become possible for nodes without the entire blockchain to answer SPV queries (by retrieving the UTXO set trustlessly and using this to answer queries). It also saves bandwidth for Bitcore Core nodes, who only need to send roughly 1GB of data, in order to synchronise a node, rather than 40GB&#43;. I will continue to run a full Bitcoin Core node, saving the entire blockchain history, but it shouldn’t be a requirement to hold the entire transaction history in order to start verifying new transactions.&lt;br/&gt;&lt;br/&gt;As far as I can see, this also forces miners to actually maintain an UTXO set, rather than just build on top of the chain with the most proof-of-work. Producing a UTXO set and verifying a block against a chain is the same thing, so by including the hash of the UTXO set we force miners to verify the block that they want to build on top of.&lt;br/&gt;&lt;br/&gt;Am I missing something obvious, because as far as I can see, this solves the problem of quadratic time complexity for initial sync: &lt;a href=&#34;http://www.youtube.com/watch?v=TgjrS-BPWDQ&amp;amp;t=2h02m12s&#34;&gt;http://www.youtube.com/watch?v=TgjrS-BPWDQ&amp;amp;t=2h02m12s&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;The only added step to verifying a block is to hash the UTXO set. So it does require additional computation, but most modern CPUs have a SHA256 throughput of around 500 MB/s, which means it takes only two seconds to hash the UTXO set. And this can be improved further (GPUs can do 2-3 GB/s). A small sacrifice for the added ease of initial syncing, in my opinion.&lt;br/&gt;&lt;br/&gt;/Rune
    </content>
    <updated>2023-06-07T17:40:55Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqszf0wf857gsf7tnqs96y94xucwjjdh40tk97engf6azj4pa08pyaszyzzr30h405zllcccxham2t30ja8szs65lp9u6qc9zqekc6ey50u4c32hlpt</id>
    
      <title type="html">📅 Original date posted:2014-02-12 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqszf0wf857gsf7tnqs96y94xucwjjdh40tk97engf6azj4pa08pyaszyzzr30h405zllcccxham2t30ja8szs65lp9u6qc9zqekc6ey50u4c32hlpt" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswlsv4fcwvxhxzk9f9sq4vm6cyqhadzevqvqcsk55rrw7yaxd652cq9lzv8&#39;&gt;nevent1q…lzv8&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2014-02-12&lt;br/&gt;📝 Original message:Instead of trying to remove the possibility of transaction&lt;br/&gt;malleability, would it make sense to define a new, &amp;#34;canonical&lt;br/&gt;transaction hash/ID&amp;#34; (cTxID), which would be a hash of the part of the&lt;br/&gt;transaction data which we know is not malleable, and have clients use&lt;br/&gt;this cTxID internally, thus making the traditional transaction hash&lt;br/&gt;irrelevant for a client to function correctly?&lt;br/&gt;&lt;br/&gt;We already have a non-malleable transaction hash: the hash that is&lt;br/&gt;signed, ie. the transaction with each scriptSig replaced by the&lt;br/&gt;scriptPubKey it redeems. This could be the cTxID.&lt;br/&gt;&lt;br/&gt;Or is this simply a too fundamental change to the way bitcoin-qt (and&lt;br/&gt;all other clients) work in order to be feasible?&lt;br/&gt;&lt;br/&gt;As far as I can see, it completely solves the issue of not having a&lt;br/&gt;canonical ID for a transaction, but it also increases the&lt;br/&gt;computational requirements for a node. For one, as far as I can see,&lt;br/&gt;it requires the node to index all transactions, because in order to&lt;br/&gt;calculate a cTxID, it would be necessary to fetch all transactions&lt;br/&gt;referred to by the transaction in question, in order to pull in the&lt;br/&gt;scriptPubKeys that are redeemed.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Mon, Feb 10, 2014 at 4:00 AM, Peter Todd &amp;lt;pete at petertodd.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; On Mon, Feb 10, 2014 at 12:33:02AM &#43;0100, Pieter Wuille wrote:&lt;br/&gt;&amp;gt;&amp;gt; Hello all,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; it was something I planned to do since a long time, but with the&lt;br/&gt;&amp;gt;&amp;gt; recent related issues popping up, I finally got around to writing a&lt;br/&gt;&amp;gt;&amp;gt; BIP about how we can get rid of transaction malleability over time.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The proposed document is here: &lt;a href=&#34;https://gist.github.com/sipa/8907691&#34;&gt;https://gist.github.com/sipa/8907691&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I expect most rules to not be controversial. Maybe rules 1 and 3, as&lt;br/&gt;&amp;gt;&amp;gt; they require modifications to wallet software (Bitcoin Core 0.9 and&lt;br/&gt;&amp;gt;&amp;gt; BitcoinJ already implement it, though) and potentially invalidate some&lt;br/&gt;&amp;gt;&amp;gt; script functionality. However, these new rules remain optional and&lt;br/&gt;&amp;gt;&amp;gt; controlled by an nVersion increase.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Comments please!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; You should probably add making CHECKMULTISIG require the dummy value to&lt;br/&gt;&amp;gt; be exactly equal to OP_FALSE; verifying that in the transaction itself is&lt;br/&gt;&amp;gt; laborious. A more subtle example is we may want both CHECKSIG and&lt;br/&gt;&amp;gt; CHECKMULTISIG to fail the transaction if the signature is invalid but&lt;br/&gt;&amp;gt; not exactly equal to OP_FALSE; some transaction forms are significantly&lt;br/&gt;&amp;gt; more compact if you can have failed signatures, but that&amp;#39;s a source of&lt;br/&gt;&amp;gt; malleability. (are there counter examples people can think of?)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; But as I said on IRC, I&amp;#39;m a bit hesitant to bake in assumptions about&lt;br/&gt;&amp;gt; malleability when we have no solid idea if ECC signatures are or are not&lt;br/&gt;&amp;gt; malleable on a fundemental level; if &amp;#34;whack-a-mole&amp;#34; anti-malleability is&lt;br/&gt;&amp;gt; all we&amp;#39;ve got it could be ugly if a break is found. Similarly, we may&lt;br/&gt;&amp;gt; find we missed something, or some needed change makes the malleability&lt;br/&gt;&amp;gt; rules difficult to work with for some new script type that is required.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;d rather see a new CHECKSIG mode for the case where malleability&lt;br/&gt;&amp;gt; absolutely must be eliminated - certain multi-party protocols - and fix&lt;br/&gt;&amp;gt; wallet software instead. (the malleability problems people see are&lt;br/&gt;&amp;gt; closely related to inability to handle double-spends and reorgs) But I&lt;br/&gt;&amp;gt; can easily see that being an impossible goal engineering wise...&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; --&lt;br/&gt;&amp;gt; &amp;#39;peter&amp;#39;[:-1]@petertodd.org&lt;br/&gt;&amp;gt; 0000000000000001465bc2730ffed7493d166d18d288f6cf15e8cdb5d4a3c7b1&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ------------------------------------------------------------------------------&lt;br/&gt;&amp;gt; Managing the Performance of Cloud-Based Applications&lt;br/&gt;&amp;gt; Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.&lt;br/&gt;&amp;gt; Read the Whitepaper.&lt;br/&gt;&amp;gt; &lt;a href=&#34;http://pubads.g.doubleclick.net/gampad/clk?id=121051231&amp;amp;iu=/4140/ostg.clktrk&#34;&gt;http://pubads.g.doubleclick.net/gampad/clk?id=121051231&amp;amp;iu=/4140/ostg.clktrk&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Bitcoin-development mailing list&lt;br/&gt;&amp;gt; Bitcoin-development at lists.sourceforge.net&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&#34;&gt;https://lists.sourceforge.net/lists/listinfo/bitcoin-development&lt;/a&gt;&lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T15:13:21Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsx4w66n3txj0pnqkyygrq43pyfm2frwl4980t9p9aer8lec875etczyzzr30h405zllcccxham2t30ja8szs65lp9u6qc9zqekc6ey50u4cqrrdgg</id>
    
      <title type="html">📅 Original date posted:2013-05-31 📝 Original message:On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsx4w66n3txj0pnqkyygrq43pyfm2frwl4980t9p9aer8lec875etczyzzr30h405zllcccxham2t30ja8szs65lp9u6qc9zqekc6ey50u4cqrrdgg" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsd40us5aaferftyatrs56c0my2ed7pwjeqhm2rr7mazqa8q8tstqgpjx6m8&#39;&gt;nevent1q…x6m8&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2013-05-31&lt;br/&gt;📝 Original message:On Fri, May 31, 2013 at 2:10 PM, Michael Hendricks &amp;lt;michael at ndrix.org&amp;gt;wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; On Fri, May 31, 2013 at 5:56 AM, Rune Kjær Svendsen &amp;lt;runesvend at gmail.com&amp;gt;wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I have an application that wants to keep up with new blocks as they come&lt;br/&gt;&amp;gt;&amp;gt; in. For that I can use the -blocknotify option with bitcoind, which will&lt;br/&gt;&amp;gt;&amp;gt; execute my application for each new block.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The problem is that my app isn&amp;#39;t necessarily quick enough to finish its&lt;br/&gt;&amp;gt;&amp;gt; work before a new block comes in and the app is executed again.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In a similar circumstance, I changed my -blocknotify script to quickly&lt;br/&gt;&amp;gt; append necessary information to a queue and immediately exit.  A separate&lt;br/&gt;&amp;gt; script runs at all times monitoring this queue for work and performs the&lt;br/&gt;&amp;gt; labor intensive calculations.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;I&amp;#39;ve thought about this as well. It just seems somewhat clunky to me. I&amp;#39;d&lt;br/&gt;really prefer having bitcoind put out messages in batches, if it&amp;#39;s doable,&lt;br/&gt;that is.&lt;br/&gt;&lt;br/&gt;I&amp;#39;d run into a lot of concurrency issues, as far as I can see, where I&lt;br/&gt;can&amp;#39;t be sure that the queue isn&amp;#39;t written to while, for example, it is&lt;br/&gt;opened by the program that needs to process the queue items.&lt;br/&gt;&lt;br/&gt;What if a disk operation takes a long time to finish, and a two queue&lt;br/&gt;operations want to add to the queue simultaneously? This really brings&lt;br/&gt;forward all the horrors of concurrent programming.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Fri, May 31, 2013 at 2:17 PM, Jeremy Spilman &amp;lt;jeremy at taplink.co&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Would it work to just block the bitcoind thread until your process exits?&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;I don&amp;#39;t think that&amp;#39;s optimal, no. That would slow down synchronization&lt;br/&gt;drastically.&lt;br/&gt;&lt;br/&gt;It would be really nimble for bitcoind to be able to synchronize at full&lt;br/&gt;speed, and only send out events when necessary, batching together&lt;br/&gt;previously queued items.&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20130531/56c9f354/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20130531/56c9f354/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T15:02:33Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs0yaen0l847273q5qk4md5v6jwcal3980f4helxgr60nvfdaxx6jgzyzzr30h405zllcccxham2t30ja8szs65lp9u6qc9zqekc6ey50u4cypnuln</id>
    
      <title type="html">📅 Original date posted:2013-05-31 📝 Original message:Hello ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs0yaen0l847273q5qk4md5v6jwcal3980f4helxgr60nvfdaxx6jgzyzzr30h405zllcccxham2t30ja8szs65lp9u6qc9zqekc6ey50u4cypnuln" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsw7dg32a9fddr498ap6mqc0rhw6fxe5ezgcwfmdgafadahy9jfy0sp4jvpy&#39;&gt;nevent1q…jvpy&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2013-05-31&lt;br/&gt;📝 Original message:Hello dear list&lt;br/&gt;&lt;br/&gt;I have an application that wants to keep up with new blocks as they come&lt;br/&gt;in. For that I can use the -blocknotify option with bitcoind, which will&lt;br/&gt;execute my application for each new block.&lt;br/&gt;&lt;br/&gt;The problem is that my app isn&amp;#39;t necessarily quick enough to finish its&lt;br/&gt;work before a new block comes in and the app is executed again. This means&lt;br/&gt;the that bitcoind might keep executing my application even though the&lt;br/&gt;previous instance hasn&amp;#39;t finished, and that&amp;#39;s fairly inefficient&lt;br/&gt;resource-wise, as many instances of the application will be running&lt;br/&gt;simultaneously.&lt;br/&gt;&lt;br/&gt;I&amp;#39;ve discussed this with wumpus on bitcoin-dev, and we figured out a&lt;br/&gt;solution that might be better. It could replace -blocknotify or we could&lt;br/&gt;put it in a new function called -batchblocknotify&lt;br/&gt;&lt;br/&gt;The idea is that when bitcoind is executed with the -batchblocknotify&lt;br/&gt;option, and it&amp;#39;s missing a lot of blocks, upon the first incoming block,&lt;br/&gt;the command specified by -batchblocknotify is executed, and if additional&lt;br/&gt;blocks come in while this command is still running, we add the block hashes&lt;br/&gt;to a list instead of executing the command again. When the previous command&lt;br/&gt;finishes, we execute it again and pass two parameters to it: 1. the first&lt;br/&gt;block hash in the list of queued blocks, and 2. the number of blocks that&lt;br/&gt;have come in while the last command was executing.&lt;br/&gt;&lt;br/&gt;This prevents bitcoind from &amp;#34;fork bombing&amp;#34; the system, and allows the&lt;br/&gt;command to handle incoming blocks in batches.&lt;br/&gt;&lt;br/&gt;Would this make sense as an approach?&lt;br/&gt;&lt;br/&gt;I&amp;#39;ve been looking at the code and I&amp;#39;m not sure how to implement it.&lt;br/&gt;&lt;br/&gt;As far as I can see, I need to pass an object - whose state is retained&lt;br/&gt;between calls - to the thread function (runCommand) that runs the command,&lt;br/&gt;which contains a variable that keeps track of whether a previously executed&lt;br/&gt;command is still running, and that contains a list of block hashes that&lt;br/&gt;haven&amp;#39;t been processed. And I&amp;#39;m not sure how to do this.&lt;br/&gt;&lt;br/&gt;The runCommand thread is started in SetBestChain() in&lt;br/&gt;main.cpp. SetBestChain() is executed by ConnectBestBlock() in main.cpp.&lt;br/&gt;ConnectBestBlock() is executed by CBlock::AddToBlockIndex() in main.cpp.&lt;br/&gt;CBlock::AddToBlockIndex() is executed by CBlock::AcceptBlock() in main.cpp.&lt;br/&gt;CBlock::AcceptBlock() is executed by ProcessBlock() in main.cpp.&lt;br/&gt;ProcessBlock() is executed by ProcessMessage() in main.cpp. And so on, and&lt;br/&gt;so forth.&lt;br/&gt;&lt;br/&gt;What&amp;#39;s the right way to create an object that can be passed to the&lt;br/&gt;runCommand thread, whose state is retained, so it can hold information&lt;br/&gt;about whether the -batchblocknotify command is still executing, and contain&lt;br/&gt;a list of blocks that are waiting to be passed to the -batchblocknotify&lt;br/&gt;command?&lt;br/&gt;&lt;br/&gt;I assume I shouldn&amp;#39;t add a new parameter to the ProcessMessage() function,&lt;br/&gt;which passes it to ProcessBlock(), which passes it to AcceptBlock() which&lt;br/&gt;passes it to AddToBlockIndex()... and so on.&lt;br/&gt;&lt;br/&gt;Would it be appropriate to store this object inside the CValidationState&lt;br/&gt;class that is passed to SetBestChain()?&lt;br/&gt;&lt;br/&gt;I&amp;#39;m not quite so how to go about this.&lt;br/&gt;&lt;br/&gt;/Rune&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20130531/73ed57be/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20130531/73ed57be/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T15:02:32Z</updated>
  </entry>

</feed>