[bitcoin-dev] BIP Proposal: Rate Limiting with server specified Proof of Work challenges

2017-05-07 Thread Karl Johan Alm via bitcoin-dev
Hello,

I am proposing a new feature for rate limiting purposes where nodes
can make and solve arbitrary PoW challenges in return for connection
slots (to be expanded to cover e.g. bloom filters or other DoS risky
services).

The BIP currently includes two proofs of work (sha256 and
cuckoo-cycle) which can be combined (e.g. sha256(cuckoo-cycle) or
sha256(sha256(sha256)), etc).

Link: 
https://github.com/kallewoof/bips/blob/pow-connection-slots/bip-rate-limiting-via-pow.mediawiki

Feedback welcome.
___
bitcoin-dev mailing list
bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev


Re: [bitcoin-dev] A BIP proposal for segwit addresses

2017-05-07 Thread Peter Todd via bitcoin-dev
On Sun, May 07, 2017 at 02:39:14PM -0700, Pieter Wuille via bitcoin-dev wrote:
> > I don't understand your comment about non-english speaking users.
> Obviously they cannot voice-communicate at all with only-english-speaking
> users, so there is no need to communicate voice-communicate addresses
> between them.
> 
> I assume that Peter Todd is talking about cases where English speakers are
> interacting with non-native English speakers, who may know how to pronounce
> numbers or alphabetical characters, but not all special characters.

Exactly - knowledge of the English language isn't a binary. Equally, I don't
remember ever learning names of special characters in French class back in
elementary school, but I do recall us drilling the alphabet and especially
numbers repeatedly.

If I were trying to tell a French speaker a BTC address, I'd probably be able
to succesfully do it with bech32, but not with any encoding using special
characters.

> In general:
> 
> In the past weeks people have contributed two new reference implementations
> (Haskell and Rust), and a C++ and Go one are underway (see
> https://github.com/sipa/bech32).

FWIW, I also did a partial rust implementation of just the Bech32 encoding for
a prototype non-BTC use-case. Other than the version number being it's own
"chunk" I found it very straight-forward to implement and I think it'll make
for a nice replacement for what otherwise would have been hex digests.

-- 
https://petertodd.org 'peter'[:-1]@petertodd.org


signature.asc
Description: Digital signature
___
bitcoin-dev mailing list
bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev


Re: [bitcoin-dev] A BIP proposal for segwit addresses

2017-05-07 Thread Pieter Wuille via bitcoin-dev
On Mon, Mar 20, 2017 at 2:35 PM, Pieter Wuille 
wrote:

> Hello everyone,
>
> You can find the text here:
> https://github.com/sipa/bech32/blob/master/bip-witaddr.mediawiki
>

Responding to a few comments:

By Andreas Schildbach:

> I'm not convinced that transmitting addresses via voice should be a
usecase to target at

I think it should be. It's certainly not the most important way through
which addresses are communicated or verified, but I am trying to address
all places where humans interact with addresses. I have certainly tried to
verify addresses a few times through voice, when dealing with significant
amounts.

Regarding your QR code comments: it is certainly possible to find a more
compact QR code representation. That is not the goal of the BIP though -
it's trying to introduce one commonly recognizable format that has good
properties for all use cases, even if that means being suboptimal in
certain aspects for some.

> I don't understand your comment about non-english speaking users.
Obviously they cannot voice-communicate at all with only-english-speaking
users, so there is no need to communicate voice-communicate addresses
between them.

I assume that Peter Todd is talking about cases where English speakers are
interacting with non-native English speakers, who may know how to pronounce
numbers or alphabetical characters, but not all special characters.

> Speaking of URLs, actually Base 32 (as well as Base 43) makes QR codes
*bigger* because due to the characters used for URL parameters (?&=) those
QR codes are locked to binary mode.

I believe that is incorrect. Data in QR codes can switch from one mode to
another on a per-character basis (with an overhead of a few bits). I don't
know to what extent common QR encoders make intelligent decisions about
this, but it does not seem very hard.

By Lucas Ontivero:

> Here I think it could worth to mention that 58 requires mathematical
operations over big numbers. This is not very fast and most of the
programming languages don't provide support for big numbers OOB.

It's not that hard to emulate the bignum logic in languages that don't
support it. See for example this code in Bitcoin Core:
https://github.com/bitcoin/bitcoin/blob/v0.14.1/src/base58.cpp#L37L53. So I
think it's not necessary to go into all the possible ways Base58 can be
implemented in the document, and the existing language ("Base58 decoding is
complicated and relatively slow.") is sufficient.

> I understand that if a new generic encoding format is introduced that
could lead to some confusions but what if in the future there is a new type
of address that can also be encoded with bech32? Don't we need a address
type anyway?

I believe that it's likely that new types of outputs that may be introduced
in the future will most likely not be a simple constant byte sequence that
can be computed directly from addresses, but need some processing by the
sender. This is the case for example for Reusable/Stealth addresses and
Confidential Transactions addresses. Such outputs, if ever introduced on a
wide scale, should ideally not be representable as existing address types,
as that could not only lead to confusion, but also to lost privacy and
funds.

And, If there ever is a need for introducing a "constant scriptPubKey" type
address again, the encoding proposed in this document can be reused.
Currently, the header value can be at most 17. In the future new proposals
could give a meaning to values 18 through 31.


In general:

In the past weeks people have contributed two new reference implementations
(Haskell and Rust), and a C++ and Go one are underway (see
https://github.com/sipa/bech32).

I'd like to move forward and request a BIP number assignment for this
proposal.


Cheers,

-- 
Pieter
___
bitcoin-dev mailing list
bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev


[bitcoin-dev] Generalized versionbits BIP requesting number assignment

2017-05-07 Thread Sancho Panza via bitcoin-dev
Hola,

I've submitted the generalized versionbits specification for BIP number 
assignment:

https://github.com/bitcoin/bips/pull/532

Your feedback and comments welcome.

The spec has been updated to include a link to the reference implementation.
I hope to find time soon to produce a similar reference implementation on 
Bitcoin Core.

Sancho___
bitcoin-dev mailing list
bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev