Jonas, I think his proposal is to enable extending the P2P layer, e.g.
adding new message types. Are you suggesting having externalized
message processing? That could be done via RPC/ZMQ while opening up a
much more narrow attack surface than dlopen, although I imagine such
an interface would require a very complex API specification.

On Sun, Aug 13, 2017 at 1:00 PM, Jonas Schnelli via bitcoin-dev
<bitcoin-dev@lists.linuxfoundation.org> wrote:
> Hi Erik
>
> Thanks for your proposal.
> In general, modularisation is a good thing, though proposing core to add 
> modules wie dlopen() seems the wrong direction.
> Core already has the problem of running to many things in the same process. 
> The consensus logic, p2p system as well as the wallet AND the GUI do all 
> share the same process (!).
>
> A module approach like you describe would be a security nightmare (and Core 
> is currently in the process of separating out the wallet and the GUI into its 
> own process).
>
> What does speak against using the existing IPC interfaces like RPC/ZMQ?
> RPC can be bidirectional using long poll.
>
> /jonas
>
>> I was thinking about something like this that could add the ability for 
>> module extensions in the core client.
>>
>> When messages are received, modules hooks are called with the message data.
>>
>> They can then handle, mark the peer invalid, push a message to the peer or 
>> pass through an alternate command.  Also, modules could have their own 
>> private commands prefixed by "x:" or something like that.
>>
>> The idea is that the base P2P layer is left undisturbed, but there is now a 
>> way to create "enhanced features" that some peers support.
>>
>> My end goal is to support using lightning network micropayments to allow 
>> people to pay for better node access - creating a market for node services.
>>
>> But I don't think this should be "baked in" to core.   Nor do I think it 
>> should be a "patch".   It should be a linked-in module, optionally compiled 
>> and added to bitcoin conf, then loaded via dlopen().    Modules should be 
>> slightly robust to Bitcoin versions changing out from under them, but not if 
>> the network layer is changed.   This can be ensured by a) keeping a module 
>> version number, and b) treating module responses as if they were just 
>> received from the network.   Any module incompatibility should throw an 
>> exception...ensuring broken peers don't stay online.
>
>
> _______________________________________________
> bitcoin-dev mailing list
> bitcoin-dev@lists.linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>
_______________________________________________
bitcoin-dev mailing list
bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev

Reply via email to