I'm not using whitelisting. Nodes that I am connected to do not relay the 
invalid transactions but do not DoS ban me thanks to some extra logic I 
have written for bitcoind. All I need to do know is work out how to remove 
a pending transaction if it has been rejected from my BitcoinJ wallet...

On Wednesday, April 13, 2016 at 1:51:43 PM UTC+1, Jameson Lopp wrote:
>
> Interesting. In that case, if you're just using your node as a transaction 
> validator then it might be OK. The big question is whether or not a node 
> relays invalid transactions from whitelisted peers - if it does, that could 
> be bad because your node could end up getting disconnected from its peers 
> because they think it's trying to attack them. The documentation says that 
> "whitelisted peers cannot be DoS banned and their transactions are always 
> relayed, even if they are already in the mempool" thus it could be 
> dangerous.
>
> - Jameson
>
> On Wed, Apr 13, 2016 at 6:05 AM, Thomas Taylor <[email protected] 
> <javascript:>> wrote:
>
>> Thanks for the info Jameson.
>>
>> Sending these 'invalid' transactions is part of my application logic 
>> however. I am implementing a lottery in which a node tries to 'claim' its 
>> winnings by trying to spend all of the transactions it can see with a 
>> certain guess. If this guess is wrong however, the script is not valid and 
>> I get this error. 
>>
>> I will whitelist for now, but I guess I need to change these misbehaviour 
>> rules?
>>
>> Tom
>>
>> On Tuesday, March 8, 2016 at 2:30:52 PM UTC, Jameson Lopp wrote:
>>>
>>> Thomas,
>>>
>>> Your transaction was invalid in such a way that one of Bitcoin Core's 
>>> "peer misbehavior" rules was triggered and caused bitcoind to forcible 
>>> close the connection.
>>>
>>> Here is the relevant line of code in Core: 
>>> https://github.com/bitcoin/bitcoin/blob/8b70a64d62c6e64288762d062414cc979f880c54/src/main.cpp#L1803
>>>
>>> Basically, you need to fix whatever bug in your transaction creation is 
>>> causing this, otherwise your bitcoind will kill the connection every time 
>>> it receives an invalid transaction. It may be possible for you to work 
>>> around the problem by whitelisting BitcoinJ's IP address inside the node 
>>> but I think that would be a band-aid for fixing the underlying issue.
>>>
>>> - Jameson
>>>
>>> On Mon, Mar 7, 2016 at 5:53 PM, Thomas Taylor <[email protected]> wrote:
>>>
>>>> Using Bitcoinj in regtest, I send a transaction that gets rejected by a 
>>>> peer I am connected to (in another Docker container  at 172.17.0.1). For 
>>>> my 
>>>> application purposes, this is expected.
>>>>
>>>> After rejecting, bitcoinj reports this peer as dead, and procedes to 
>>>> connect to the local bitcoind instance. Hence it only sends transactions 
>>>> to 
>>>> itself (at 172.17.0.2)!
>>>>
>>>> How can I stop this? Note that if the first transaction is not 
>>>> rejected, it broadcasts fine. Here are some of the logs:
>>>>
>>>> [NioClientManager] ERROR org.bitcoinj.core.Peer - [127.0.0.1]:18444 
>>>> /Satoshi:0.12.99/: Received Reject: tx 
>>>> e8d3b8741c9a37cba5a2c3cf28911eac14be466f2288a721f22056b711c9078a for 
>>>> reason 
>>>> 'mandatory-script-verify-flag-failed (Script failed an OP_EQUALVERIFY 
>>>> operation)' (16)
>>>>
>>>> [NioClientManager] INFO org.bitcoinj.core.PeerGroup - 
>>>> [127.0.0.1]:18444: Peer died      (0 connected, 0 pending, 1 max)
>>>>
>>>> [NioClientManager] INFO org.bitcoinj.core.PeerGroup - Download peer 
>>>> died. Picking a new one.
>>>>
>>>> [NioClientManager] INFO org.bitcoinj.core.PeerGroup - Unsetting 
>>>> download peer: [127.0.0.1]:18444
>>>>
>>>> [PeerGroup Thread] INFO org.bitcoinj.core.PeerGroup - Waiting 1000 msec 
>>>> before next connect attempt to [172.17.0.2]:18444
>>>>
>>>> [Timer-0] ERROR org.bitcoinj.core.Context - Performing thread fixup: 
>>>> you are accessing bitcoinj via a thread that has not had any context set 
>>>> on 
>>>> it.
>>>>
>>>> [Timer-0] ERROR org.bitcoinj.core.Context - This error has been 
>>>> corrected for, but doing this makes your app less robust.
>>>>
>>>> [Timer-0] ERROR org.bitcoinj.core.Context - You should use 
>>>> Context.propagate() or a ContextPropagatingThreadFactory.
>>>>
>>>> [Timer-0] ERROR org.bitcoinj.core.Context - Please refer to the user 
>>>> guide for more information about this.
>>>>
>>>> [Timer-0] ERROR org.bitcoinj.core.Context - Thread name is Timer-0.
>>>>
>>>>
>>>> Thanks!
>>>>
>>>> -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "bitcoinj" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to [email protected].
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "bitcoinj" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"bitcoinj" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to