profile
viewpoint

promag/bitcoin 1

Bitcoin Core integration/staging tree

promag/angular-primus 0

Primus service for Angular.js

promag/bech32 0

Code snippets and analysis of the Bech32 format

promag/bitcoindevlist.com 0

Support bitcoin developers so they can focus on building our future.

promag/blue-loader-python 0

Python Loader for Ledger Blue and Nano S

promag/gdk 0

Blockstream Green Development Kit

promag/GenericMakefile 0

A generic makefile for use with small/medium C and C++ projects.

promag/gui 0

Bitcoin Core GUI staging repository. Please do not fork unless for development reasons.

promag/HWI 0

Bitcoin Hardware Wallet Interaction scripts

promag/isoc 0

A list of country names and codes as published by the ISO 3166-1 standard

pull request commentbitcoin-core/secp256k1

Safegcd inverses, drop Jacobi symbols, remove libgmp

An observation for people's idle amusement: Almost (?) always after inverting we multiply the inverse with something. If the inverse is run with the initial e equal to the value we'd like to multiply the inverse with, we save the multiply. Sounds kinda pointless but var time is so fast this should be roughly a 2% speedup. Pieter pointed out to me though a that conversion to signed62 is needed and potentially a normalization of the incoming number, which would eat into the speedup.

sipa

comment created time in 6 minutes

Pull request review commentbitcoin/bitcoin

gitian-keys: Add signer aliases, some historical keys

 9D3CC86A72F8494342EA5FD10A41BDC3F4FAFF1C Aaron Clauson (sipsorcery) 617C90010B3BD370B0AC7D424BB42E31C79111B8 Akira Takizawa E944AE667CF960B1004BC32FCA662BE18B877A60 Andreas Schildbach-152812300785C96444D3334D17565732E08E5E41 Andrew Chow+152812300785C96444D3334D17565732E08E5E41 Andrew Chow (achow101) 590B7292695AFFA5B672CBB2E13FC145CD3F4304 Antoine Poinsot (darosior) 0AD83877C1F0CD1EE9BD660AD7CC770B81FD22A8 Ben Carman (benthecarman) 912FD3228387123DC97E0E57D5566241A0295FA9 BtcDrak C519EBCF3B926298946783EFF6430754120EC2F4 Christian Decker (cdecker)+18AE2F798E0D239755DA4FD24B79F986CBDF8736 Chun Kuan Le (ken2812221) F20F56EF6A067F70E8A5C99FFF95FAA971697405 centaur-C060A6635913D98A3587D7DB1C2491FFEB0EF770 Cory Fields+C060A6635913D98A3587D7DB1C2491FFEB0EF770 Cory Fields (cfields) BF6273FAEF7CC0BA1F562E50989F6B3048A116B5 Dev Random-6D3170C1DC2C6FD0AEEBCA6743811D1A26623924 Douglas Roark+6D3170C1DC2C6FD0AEEBCA6743811D1A26623924 Douglas Roark (droark)+1C6621605EC50319C463D56C7F81D87985D61612 Emanuele Cisbani (cisba) 9A1689B60D1B3CCE9262307A2F40A9BF167FBA47 Erik Mossberg (erkmos) D35176BE9264832E4ACA8986BF0792FBE95DC863 fivepiece+6F993B250557E7B016ADE5713BDCDA2D87A881D9 Fuzzbawls (Fuzzbawls) 01CDF4627A3B88AAE4A571C87588242FBE38D3A8 Gavin Andresen D1DBF2C4B96F2DEBF4C16654410108112E7EA81F Hennadii Stepanov (hebasto)+A2FD494D0021AA9B4FA58F759102B7AE654A4A5A Ilyas Ridhuan (IlyasRidhuan)+D3F22A3A4C366C2DCB66D3722DA9C5A7FA81EA35 Jarol Rodriguez (jarolrod)+7480909378D544EA6B6DCEB7535B12980BB8A4D3 Jeffri H Frontz (jhfrontz) D3CC177286005BB8FF673294C5242A1AB3936517 jl2012-82921A4B88FD454B7EB8CE3C796C4109063D4EAF Jon Atack-32EE5C4C3FA15CCADB46ABE529D4BCB6416F53EC Jonas Schnelli+82921A4B88FD454B7EB8CE3C796C4109063D4EAF Jon Atack (jonatack)+32EE5C4C3FA15CCADB46ABE529D4BCB6416F53EC Jonas Schnelli (jonasschnelli) 4B4E840451149DD7FB0D633477DFAB5C3108B9A8 Jorge Timon C42AFF7C61B3E44A1454CD3557AF762DB3353322 Karl-Johan Alm (kallewoof)-E463A93F5F3117EEDE6C7316BD02942421F4889F Luke Dashjr-B8B3F1C0E58C15DB6A81D30C3648A882F4316B9B Marco Falke+30DE693AE0DE9E37B3E7EB6BBFF0F67810C1EED1 Lisa Neigut (niftynei)+E463A93F5F3117EEDE6C7316BD02942421F4889F Luke Dashjr (luke-jr)+B8B3F1C0E58C15DB6A81D30C3648A882F4316B9B Marco Falke (marco) 07DF3E57A548CCFB7530709189BBB8663E2E65CE Matt Corallo (BlueMatt)

maybe, per https://github.com/bitcoin-core/gitian.sigs/commits?author=TheBlueMatt

07DF3E57A548CCFB7530709189BBB8663E2E65CE Matt Corallo (TheBlueMatt)
laanwj

comment created time in 28 minutes

Pull request review commentbitcoin/bitcoin

gitian-keys: Add signer aliases, some historical keys

 9D3CC86A72F8494342EA5FD10A41BDC3F4FAFF1C Aaron Clauson (sipsorcery) 617C90010B3BD370B0AC7D424BB42E31C79111B8 Akira Takizawa E944AE667CF960B1004BC32FCA662BE18B877A60 Andreas Schildbach-152812300785C96444D3334D17565732E08E5E41 Andrew Chow+152812300785C96444D3334D17565732E08E5E41 Andrew Chow (achow101) 590B7292695AFFA5B672CBB2E13FC145CD3F4304 Antoine Poinsot (darosior) 0AD83877C1F0CD1EE9BD660AD7CC770B81FD22A8 Ben Carman (benthecarman) 912FD3228387123DC97E0E57D5566241A0295FA9 BtcDrak C519EBCF3B926298946783EFF6430754120EC2F4 Christian Decker (cdecker)+18AE2F798E0D239755DA4FD24B79F986CBDF8736 Chun Kuan Le (ken2812221) F20F56EF6A067F70E8A5C99FFF95FAA971697405 centaur-C060A6635913D98A3587D7DB1C2491FFEB0EF770 Cory Fields+C060A6635913D98A3587D7DB1C2491FFEB0EF770 Cory Fields (cfields) BF6273FAEF7CC0BA1F562E50989F6B3048A116B5 Dev Random-6D3170C1DC2C6FD0AEEBCA6743811D1A26623924 Douglas Roark+6D3170C1DC2C6FD0AEEBCA6743811D1A26623924 Douglas Roark (droark)+1C6621605EC50319C463D56C7F81D87985D61612 Emanuele Cisbani (cisba) 9A1689B60D1B3CCE9262307A2F40A9BF167FBA47 Erik Mossberg (erkmos) D35176BE9264832E4ACA8986BF0792FBE95DC863 fivepiece+6F993B250557E7B016ADE5713BDCDA2D87A881D9 Fuzzbawls (Fuzzbawls) 01CDF4627A3B88AAE4A571C87588242FBE38D3A8 Gavin Andresen D1DBF2C4B96F2DEBF4C16654410108112E7EA81F Hennadii Stepanov (hebasto)+A2FD494D0021AA9B4FA58F759102B7AE654A4A5A Ilyas Ridhuan (IlyasRidhuan)+D3F22A3A4C366C2DCB66D3722DA9C5A7FA81EA35 Jarol Rodriguez (jarolrod)+7480909378D544EA6B6DCEB7535B12980BB8A4D3 Jeffri H Frontz (jhfrontz) D3CC177286005BB8FF673294C5242A1AB3936517 jl2012-82921A4B88FD454B7EB8CE3C796C4109063D4EAF Jon Atack-32EE5C4C3FA15CCADB46ABE529D4BCB6416F53EC Jonas Schnelli+82921A4B88FD454B7EB8CE3C796C4109063D4EAF Jon Atack (jonatack)+32EE5C4C3FA15CCADB46ABE529D4BCB6416F53EC Jonas Schnelli (jonasschnelli) 4B4E840451149DD7FB0D633477DFAB5C3108B9A8 Jorge Timon
4B4E840451149DD7FB0D633477DFAB5C3108B9A8 Jorge Timon (jtimon)
laanwj

comment created time in 30 minutes

Pull request review commentbitcoin/bitcoin

gitian-keys: Add signer aliases, some historical keys

 9D3CC86A72F8494342EA5FD10A41BDC3F4FAFF1C Aaron Clauson (sipsorcery) 617C90010B3BD370B0AC7D424BB42E31C79111B8 Akira Takizawa E944AE667CF960B1004BC32FCA662BE18B877A60 Andreas Schildbach-152812300785C96444D3334D17565732E08E5E41 Andrew Chow+152812300785C96444D3334D17565732E08E5E41 Andrew Chow (achow101) 590B7292695AFFA5B672CBB2E13FC145CD3F4304 Antoine Poinsot (darosior) 0AD83877C1F0CD1EE9BD660AD7CC770B81FD22A8 Ben Carman (benthecarman) 912FD3228387123DC97E0E57D5566241A0295FA9 BtcDrak C519EBCF3B926298946783EFF6430754120EC2F4 Christian Decker (cdecker)+18AE2F798E0D239755DA4FD24B79F986CBDF8736 Chun Kuan Le (ken2812221) F20F56EF6A067F70E8A5C99FFF95FAA971697405 centaur-C060A6635913D98A3587D7DB1C2491FFEB0EF770 Cory Fields+C060A6635913D98A3587D7DB1C2491FFEB0EF770 Cory Fields (cfields) BF6273FAEF7CC0BA1F562E50989F6B3048A116B5 Dev Random-6D3170C1DC2C6FD0AEEBCA6743811D1A26623924 Douglas Roark+6D3170C1DC2C6FD0AEEBCA6743811D1A26623924 Douglas Roark (droark)+1C6621605EC50319C463D56C7F81D87985D61612 Emanuele Cisbani (cisba) 9A1689B60D1B3CCE9262307A2F40A9BF167FBA47 Erik Mossberg (erkmos) D35176BE9264832E4ACA8986BF0792FBE95DC863 fivepiece+6F993B250557E7B016ADE5713BDCDA2D87A881D9 Fuzzbawls (Fuzzbawls) 01CDF4627A3B88AAE4A571C87588242FBE38D3A8 Gavin Andresen
01CDF4627A3B88AAE4A571C87588242FBE38D3A8 Gavin Andresen (gavinandresen)
laanwj

comment created time in 31 minutes

Pull request review commentbitcoin/bitcoin

gitian-keys: Add signer aliases, some historical keys

 9D3CC86A72F8494342EA5FD10A41BDC3F4FAFF1C Aaron Clauson (sipsorcery) 617C90010B3BD370B0AC7D424BB42E31C79111B8 Akira Takizawa E944AE667CF960B1004BC32FCA662BE18B877A60 Andreas Schildbach-152812300785C96444D3334D17565732E08E5E41 Andrew Chow+152812300785C96444D3334D17565732E08E5E41 Andrew Chow (achow101) 590B7292695AFFA5B672CBB2E13FC145CD3F4304 Antoine Poinsot (darosior) 0AD83877C1F0CD1EE9BD660AD7CC770B81FD22A8 Ben Carman (benthecarman) 912FD3228387123DC97E0E57D5566241A0295FA9 BtcDrak C519EBCF3B926298946783EFF6430754120EC2F4 Christian Decker (cdecker)+18AE2F798E0D239755DA4FD24B79F986CBDF8736 Chun Kuan Le (ken2812221) F20F56EF6A067F70E8A5C99FFF95FAA971697405 centaur-C060A6635913D98A3587D7DB1C2491FFEB0EF770 Cory Fields+C060A6635913D98A3587D7DB1C2491FFEB0EF770 Cory Fields (cfields) BF6273FAEF7CC0BA1F562E50989F6B3048A116B5 Dev Random-6D3170C1DC2C6FD0AEEBCA6743811D1A26623924 Douglas Roark+6D3170C1DC2C6FD0AEEBCA6743811D1A26623924 Douglas Roark (droark)+1C6621605EC50319C463D56C7F81D87985D61612 Emanuele Cisbani (cisba) 9A1689B60D1B3CCE9262307A2F40A9BF167FBA47 Erik Mossberg (erkmos) D35176BE9264832E4ACA8986BF0792FBE95DC863 fivepiece+6F993B250557E7B016ADE5713BDCDA2D87A881D9 Fuzzbawls (Fuzzbawls)

seems redundant

laanwj

comment created time in 31 minutes

Pull request review commentbitcoin/bitcoin

gitian-keys: Add signer aliases, some historical keys

 9D3CC86A72F8494342EA5FD10A41BDC3F4FAFF1C Aaron Clauson (sipsorcery) 617C90010B3BD370B0AC7D424BB42E31C79111B8 Akira Takizawa E944AE667CF960B1004BC32FCA662BE18B877A60 Andreas Schildbach-152812300785C96444D3334D17565732E08E5E41 Andrew Chow+152812300785C96444D3334D17565732E08E5E41 Andrew Chow (achow101) 590B7292695AFFA5B672CBB2E13FC145CD3F4304 Antoine Poinsot (darosior) 0AD83877C1F0CD1EE9BD660AD7CC770B81FD22A8 Ben Carman (benthecarman) 912FD3228387123DC97E0E57D5566241A0295FA9 BtcDrak C519EBCF3B926298946783EFF6430754120EC2F4 Christian Decker (cdecker)+18AE2F798E0D239755DA4FD24B79F986CBDF8736 Chun Kuan Le (ken2812221) F20F56EF6A067F70E8A5C99FFF95FAA971697405 centaur-C060A6635913D98A3587D7DB1C2491FFEB0EF770 Cory Fields+C060A6635913D98A3587D7DB1C2491FFEB0EF770 Cory Fields (cfields)

maybe

C060A6635913D98A3587D7DB1C2491FFEB0EF770 Cory Fields (cfields, theuni)
laanwj

comment created time in 33 minutes

Pull request review commentbitcoin/bitcoin

gitian-keys: Add signer aliases, some historical keys

 9D3CC86A72F8494342EA5FD10A41BDC3F4FAFF1C Aaron Clauson (sipsorcery) 617C90010B3BD370B0AC7D424BB42E31C79111B8 Akira Takizawa E944AE667CF960B1004BC32FCA662BE18B877A60 Andreas Schildbach-152812300785C96444D3334D17565732E08E5E41 Andrew Chow+152812300785C96444D3334D17565732E08E5E41 Andrew Chow (achow101) 590B7292695AFFA5B672CBB2E13FC145CD3F4304 Antoine Poinsot (darosior) 0AD83877C1F0CD1EE9BD660AD7CC770B81FD22A8 Ben Carman (benthecarman) 912FD3228387123DC97E0E57D5566241A0295FA9 BtcDrak C519EBCF3B926298946783EFF6430754120EC2F4 Christian Decker (cdecker)+18AE2F798E0D239755DA4FD24B79F986CBDF8736 Chun Kuan Le (ken2812221) F20F56EF6A067F70E8A5C99FFF95FAA971697405 centaur-C060A6635913D98A3587D7DB1C2491FFEB0EF770 Cory Fields+C060A6635913D98A3587D7DB1C2491FFEB0EF770 Cory Fields (cfields) BF6273FAEF7CC0BA1F562E50989F6B3048A116B5 Dev Random-6D3170C1DC2C6FD0AEEBCA6743811D1A26623924 Douglas Roark+6D3170C1DC2C6FD0AEEBCA6743811D1A26623924 Douglas Roark (droark)+1C6621605EC50319C463D56C7F81D87985D61612 Emanuele Cisbani (cisba) 9A1689B60D1B3CCE9262307A2F40A9BF167FBA47 Erik Mossberg (erkmos) D35176BE9264832E4ACA8986BF0792FBE95DC863 fivepiece+6F993B250557E7B016ADE5713BDCDA2D87A881D9 Fuzzbawls (Fuzzbawls) 01CDF4627A3B88AAE4A571C87588242FBE38D3A8 Gavin Andresen D1DBF2C4B96F2DEBF4C16654410108112E7EA81F Hennadii Stepanov (hebasto)+A2FD494D0021AA9B4FA58F759102B7AE654A4A5A Ilyas Ridhuan (IlyasRidhuan)+D3F22A3A4C366C2DCB66D3722DA9C5A7FA81EA35 Jarol Rodriguez (jarolrod)+7480909378D544EA6B6DCEB7535B12980BB8A4D3 Jeffri H Frontz (jhfrontz) D3CC177286005BB8FF673294C5242A1AB3936517 jl2012-82921A4B88FD454B7EB8CE3C796C4109063D4EAF Jon Atack-32EE5C4C3FA15CCADB46ABE529D4BCB6416F53EC Jonas Schnelli+82921A4B88FD454B7EB8CE3C796C4109063D4EAF Jon Atack (jonatack)+32EE5C4C3FA15CCADB46ABE529D4BCB6416F53EC Jonas Schnelli (jonasschnelli) 4B4E840451149DD7FB0D633477DFAB5C3108B9A8 Jorge Timon C42AFF7C61B3E44A1454CD3557AF762DB3353322 Karl-Johan Alm (kallewoof)-E463A93F5F3117EEDE6C7316BD02942421F4889F Luke Dashjr-B8B3F1C0E58C15DB6A81D30C3648A882F4316B9B Marco Falke+30DE693AE0DE9E37B3E7EB6BBFF0F67810C1EED1 Lisa Neigut (niftynei)+E463A93F5F3117EEDE6C7316BD02942421F4889F Luke Dashjr (luke-jr)+B8B3F1C0E58C15DB6A81D30C3648A882F4316B9B Marco Falke (marco)

MarcoFalke?

laanwj

comment created time in 42 minutes

Pull request review commentbitcoin/bitcoin

gitian-keys: Add signer aliases, some historical keys

 9D3CC86A72F8494342EA5FD10A41BDC3F4FAFF1C Aaron Clauson (sipsorcery) 617C90010B3BD370B0AC7D424BB42E31C79111B8 Akira Takizawa E944AE667CF960B1004BC32FCA662BE18B877A60 Andreas Schildbach-152812300785C96444D3334D17565732E08E5E41 Andrew Chow+152812300785C96444D3334D17565732E08E5E41 Andrew Chow (achow101) 590B7292695AFFA5B672CBB2E13FC145CD3F4304 Antoine Poinsot (darosior) 0AD83877C1F0CD1EE9BD660AD7CC770B81FD22A8 Ben Carman (benthecarman) 912FD3228387123DC97E0E57D5566241A0295FA9 BtcDrak C519EBCF3B926298946783EFF6430754120EC2F4 Christian Decker (cdecker)+18AE2F798E0D239755DA4FD24B79F986CBDF8736 Chun Kuan Le (ken2812221) F20F56EF6A067F70E8A5C99FFF95FAA971697405 centaur-C060A6635913D98A3587D7DB1C2491FFEB0EF770 Cory Fields+C060A6635913D98A3587D7DB1C2491FFEB0EF770 Cory Fields (cfields) BF6273FAEF7CC0BA1F562E50989F6B3048A116B5 Dev Random-6D3170C1DC2C6FD0AEEBCA6743811D1A26623924 Douglas Roark+6D3170C1DC2C6FD0AEEBCA6743811D1A26623924 Douglas Roark (droark)+1C6621605EC50319C463D56C7F81D87985D61612 Emanuele Cisbani (cisba) 9A1689B60D1B3CCE9262307A2F40A9BF167FBA47 Erik Mossberg (erkmos) D35176BE9264832E4ACA8986BF0792FBE95DC863 fivepiece+6F993B250557E7B016ADE5713BDCDA2D87A881D9 Fuzzbawls (Fuzzbawls) 01CDF4627A3B88AAE4A571C87588242FBE38D3A8 Gavin Andresen D1DBF2C4B96F2DEBF4C16654410108112E7EA81F Hennadii Stepanov (hebasto)+A2FD494D0021AA9B4FA58F759102B7AE654A4A5A Ilyas Ridhuan (IlyasRidhuan)+D3F22A3A4C366C2DCB66D3722DA9C5A7FA81EA35 Jarol Rodriguez (jarolrod)+7480909378D544EA6B6DCEB7535B12980BB8A4D3 Jeffri H Frontz (jhfrontz) D3CC177286005BB8FF673294C5242A1AB3936517 jl2012-82921A4B88FD454B7EB8CE3C796C4109063D4EAF Jon Atack-32EE5C4C3FA15CCADB46ABE529D4BCB6416F53EC Jonas Schnelli+82921A4B88FD454B7EB8CE3C796C4109063D4EAF Jon Atack (jonatack)+32EE5C4C3FA15CCADB46ABE529D4BCB6416F53EC Jonas Schnelli (jonasschnelli) 4B4E840451149DD7FB0D633477DFAB5C3108B9A8 Jorge Timon C42AFF7C61B3E44A1454CD3557AF762DB3353322 Karl-Johan Alm (kallewoof)-E463A93F5F3117EEDE6C7316BD02942421F4889F Luke Dashjr-B8B3F1C0E58C15DB6A81D30C3648A882F4316B9B Marco Falke+30DE693AE0DE9E37B3E7EB6BBFF0F67810C1EED1 Lisa Neigut (niftynei)+E463A93F5F3117EEDE6C7316BD02942421F4889F Luke Dashjr (luke-jr)+B8B3F1C0E58C15DB6A81D30C3648A882F4316B9B Marco Falke (marco) 07DF3E57A548CCFB7530709189BBB8663E2E65CE Matt Corallo (BlueMatt) CA03882CB1FC067B5D3ACFE4D300116E1C875A3D MeshCollider-E777299FC265DD04793070EB944D35F9AC3DB76A Michael Ford+E777299FC265DD04793070EB944D35F9AC3DB76A Michael Ford (fanquake) AD5764F4ADCE1B99BDFD179E12335A271D4D62EC Michael Tidwell (miketwenty1)-9692B91BBF0E8D34DFD33B1882C5C009628ECF0C Michagogo+9692B91BBF0E8D34DFD33B1882C5C009628ECF0C Michagogo (michagogo)+C57E4B42223FDE851D4F69DD28DF2724F241D8EE midnightmagic (midnightmagic) 77E72E69DA7EE0A148C06B21B34821D4944DE5F7 Nils Schneider-F4FC70F07310028424EFC20A8E4256593F177720 Oliver Gugger+F4FC70F07310028424EFC20A8E4256593F177720 Oliver Gugger (guggero, Oliver Gugger) D62A803E27E7F43486035ADBBCD04D8E9CCCAC2A Paul Rabahy 37EC7D7B0A217CDB4B4E007E7FAB114267E4FA04 Peter Todd-D762373D24904A3E42F33B08B9A408E71DAAC974 Pieter Wuille (Location: Leuven, Belgium)-133EAC179436F14A5CF1B794860FEB804E669320 Pieter Wuille+D762373D24904A3E42F33B08B9A408E71DAAC974 Pieter Wuille [Location: Leuven, Belgium] (sipa)+133EAC179436F14A5CF1B794860FEB804E669320 Pieter Wuille (sipa) 6A8F9C266528E25AEB1D7731C2371D91CB716EA7 Sebastian Falbesoner (theStack) A8FC55F3B04BA3146F3492E79303B33A305224CB Sebastian Kung (TheCharlatan)-ED9BDF7AD6A55E232E84524257FF9BDBCC301009 Sjors Provoost+ED9BDF7AD6A55E232E84524257FF9BDBCC301009 Sjors Provoost (sjors)

Sjors?

laanwj

comment created time in 40 minutes

pull request commentbitcoin-core/gui

Add direction and type columns to peers window

Something I didn't get to yet - was to separate the uncomment and give it its own column. This could be very useful for some other ideas Ive been thinking about.

jonatack

comment created time in an hour

pull request commentbitcoin/bitcoin

Implement Bech32m and use it for v1+ segwit addresses

@kallewoof Agree, a struct is definitely warranted here. Updated.

sipa

comment created time in an hour

Pull request review commentbitcoin/bitcoin

Implement Bech32m and use it for v1+ segwit addresses

  #include <stdint.h> #include <string>+#include <tuple> #include <vector>  namespace bech32 { -/** Encode a Bech32 string. If hrp contains uppercase characters, this will cause an assertion error. */-std::string Encode(const std::string& hrp, const std::vector<uint8_t>& values);+enum class Encoding {+    INVALID, -/** Decode a Bech32 string. Returns (hrp, data). Empty hrp means failure. */-std::pair<std::string, std::vector<uint8_t>> Decode(const std::string& str);+    BECH32,  //! Bech32 encoding as defined in BIP173+    BECH32M, //! Bech32m encoding as defined in bip-bech32m

I prefer not to do that just for encapsulation reason. Nothing outside of bech32.cpp should care or see the constants.

sipa

comment created time in an hour

pull request commentbitcoin/bitcoin

doc: Add tracing.md, documenting eBPF tracing

Concept ACK

laanwj

comment created time in an hour

pull request commentbitcoin/bitcoin

net: Make DNS lookup mockable, add fuzzing harness

@Crypt-iQ Thanks for reviewing. I believe all feedback should be addressed now: mind re-reviewing one last time (hopefully)? :)

practicalswift

comment created time in an hour

pull request commentbitcoin/bitcoin

doc: Add tracing.md, documenting eBPF tracing

Wow! Concept ACK.

laanwj

comment created time in an hour

pull request commentbitcoin-core/gui

Add direction and type columns to peers window

I propose that further refinements be done in a follow-up (not by me ;).

jonatack

comment created time in an hour

Pull request review commentbitcoin/bitcoin

net: Make DNS lookup mockable, add fuzzing harness

+// Copyright (c) 2020 The Bitcoin Core developers

Thanks! Fixed!

practicalswift

comment created time in an hour

Pull request review commentbitcoin/bitcoin

net: Make DNS lookup mockable, add fuzzing harness

+// Copyright (c) 2020 The Bitcoin Core developers+// Distributed under the MIT software license, see the accompanying+// file COPYING or http://www.opensource.org/licenses/mit-license.php.++#include <netbase.h>+#include <optional.h>

Thanks! Fixed!

practicalswift

comment created time in an hour

Pull request review commentbitcoin/bitcoin

net: Make DNS lookup mockable, add fuzzing harness

 bool fNameLookup = DEFAULT_NAME_LOOKUP; static const int SOCKS5_RECV_TIMEOUT = 20 * 1000; static std::atomic<bool> interruptSocks5Recv(false); +std::vector<CNetAddr> WrappedGetAddrInfo(const std::string& name, bool allow_lookup) {+    struct addrinfo aiHint;+    memset(&aiHint, 0, sizeof(struct addrinfo));++    // We want a TCP port, which is a streaming socket type+    aiHint.ai_socktype = SOCK_STREAM;+    aiHint.ai_protocol = IPPROTO_TCP;+    // We don't care which address family (IPv4 or IPv6) is returned+    aiHint.ai_family = AF_UNSPEC;+    // If we allow lookups of hostnames, use the AI_ADDRCONFIG flag to only+    // return addresses whose family we have an address configured for.+    //+    // If we don't allow lookups, then use the AI_NUMERICHOST flag for+    // getaddrinfo to only decode numerical network addresses and suppress+    // hostname lookups.+    aiHint.ai_flags = allow_lookup ? AI_ADDRCONFIG : AI_NUMERICHOST;++    struct addrinfo *aiRes = nullptr;+    int nErr = getaddrinfo(name.c_str(), nullptr, &aiHint, &aiRes);+    if (nErr)+    {+        return {};+    }++    // Traverse the linked list starting with aiTrav, add all non-internal+    // IPv4,v6 addresses to vIP while respecting nMaxSolutions.+    struct addrinfo *aiTrav = aiRes;+    std::vector<CNetAddr> resolved_addresses;+    while (aiTrav != nullptr)+    {+        CNetAddr resolved;

Thanks! Fixed!

practicalswift

comment created time in an hour

pull request commentbitcoin-core/gui

Add direction and type columns to peers window

This current PR with 2 ACKs is my preferred version among the various proposals I have seen.

jonatack

comment created time in an hour

Pull request review commentbitcoin/bitcoin

net: Make DNS lookup mockable, add fuzzing harness

+// Copyright (c) 2020 The Bitcoin Core developers

The year has updated 🎇

practicalswift

comment created time in an hour

Pull request review commentbitcoin/bitcoin

net: Make DNS lookup mockable, add fuzzing harness

+// Copyright (c) 2020 The Bitcoin Core developers+// Distributed under the MIT software license, see the accompanying+// file COPYING or http://www.opensource.org/licenses/mit-license.php.++#include <netbase.h>+#include <optional.h>

AFAICT optional.h isn't used

practicalswift

comment created time in an hour

pull request commentbitcoin-core/gui

Add direction and type columns to peers window

@jonatack @hebasto

This worked for me...

https://github.com/bitcoin-core/gui/pull/135/files#diff-e721b02fefce2a90ae95da0841adfdcc610ffccf93236ef236f81c1baead8e01R163

Most of the issues you may run into - I already figured out...

https://github.com/bitcoin-core/gui/pull/135

jonatack

comment created time in an hour

pull request commentbitcoin/bitcoin

test: Declare `nodes` type in test_framework.py.

Shouldn't the types be added in all vars (network_thread, rpc_timeout..)?

Yes but as I wrote in the description "This PR is intentionally very small, if the concept is accepted, a follow-up PRs can be more ambitious."

No problem. Concept ACK.

kiminuo

comment created time in an hour

PR opened bitcoin/bitcoin

doc: Add tracing.md, documenting eBPF tracing Docs

Add documentation for #19866.

+202 -0

0 comment

2 changed files

pr created time in 2 hours

pull request commentbitcoin/bitcoin

Allow providing local signatures in gitian osx signer

<!--cf906140f33d8803c4a75a2196329ecb--> 🐙 This pull request conflicts with the target branch and needs rebase.

<sub>Want to unsubscribe from rebase notifications on this pull request? Just convert this pull request to a "draft".</sub>

jonasschnelli

comment created time in 2 hours

push eventbitcoin/bitcoin

William Casarin

commit sha 933ab8a720cb9b3341adec4109cffb6dc5b322a5

build: detect sys/sdt.h for eBPF tracing

view details

William Casarin

commit sha 22eb7930a6ae021438aa0b8e750170534944f296

tracing: add tracing framework Signed-off-by: William Casarin <jb55@jb55.com>

view details

Wladimir J. van der Laan

commit sha 43f3ada27b835e6b198f9a669e4955d06f5c4d08

Merge #19866: eBPF Linux tracepoints 22eb7930a6ae021438aa0b8e750170534944f296 tracing: add tracing framework (William Casarin) 933ab8a720cb9b3341adec4109cffb6dc5b322a5 build: detect sys/sdt.h for eBPF tracing (William Casarin) Pull request description: Instead of writing ad-hoc logging everywhere (eg: #19509), we can take advantage of linux user static defined traces, aka. USDTs ( not the stablecoin :sweat_smile: ) The linux kernel can hook into these tracepoints at runtime, but otherwise they have little to no performance impact. Traces can pass data which can be printed externally via tools such as bpftrace. For example, here's one that prints incoming and outgoing network messages: # Examples ## Network Messages ``` #!/usr/bin/env bpftrace BEGIN { printf("bitcoin net msgs\n"); @start = nsecs; } usdt:./src/bitcoind:net:push_message { $ip = str(arg0); $peer_id = (int64)arg1; $command = str(arg2); $data_len = arg3; $data = buf(arg3,arg4); $t = (nsecs - @start) / 100000; printf("%zu outbound %s %s %zu %d %r\n", $t, $command, $ip, $peer_id, $data_len, $data); @outbound[$command]++; } usdt:./src/bitcoind:net:process_message { $ip = str(arg0); $peer_id = (int64)arg1; $command = str(arg2); $data_len = arg3; $data = buf(arg3,arg4); $t = (nsecs - @start) / 100000; printf("%zu inbound %s %s %zu %d %r\n", $t, $command, $ip, $peer_id, $data_len, $data); @inbound[$ip, $command]++; } ``` $ sudo bpftrace netmsg.bt output: https://jb55.com/s/b11312484b601fb3.txt if you look at the bottom of the output you can see a histogram of all the messages grouped by message type and IP. nice! ## IBD Benchmarking ``` #!/usr/bin/env bpftrace BEGIN { printf("IBD to 500,000 bench\n"); } usdt:./src/bitcoind:CChainState:ConnectBlock { $height = (uint32)arg0; if ($height == 1) { printf("block 1 found, starting benchmark\n"); @start = nsecs; } if ($height >= 500000) { @end = nsecs; @duration = @end - @start; exit(); } } END { printf("duration %d ms\n", @duration / 1000000) } ``` This one hooks into ConnectBlock and prints the IBD time to height 500,000 starting from the first call to ConnectBlock Userspace static tracepoints give lots of flexibility without invasive logging code. It's also more flexible than ad-hoc logging code, allowing you to instrument many different aspects of the system without having to enable per-subsystem logging. Other ideas: tracepoints for lock contention, threads, what else? Let me know what ya'll think and if this is worth adding to bitcoin. ## TODO - [ ] docs? - [x] Integrate systemtap-std-dev/libsystemtap into build (provides the <sys/sdt.h> header) - [x] ~dtrace macos support? (is this still a thing?)~ going to focus on linux for now ACKs for top commit: laanwj: Tested ACK 22eb7930a6ae021438aa0b8e750170534944f296 0xB10C: Tested ACK 22eb7930a6ae021438aa0b8e750170534944f296 Tree-SHA512: 69242242112b679c8a12a22b3bc50252c305894fb3055ae6e13d5f56221d858e58af1d698af55e23b69bdb7abedb5565ac6b45fa5144087b77a17acd04646a75

view details

push time in 2 hours

PR merged bitcoin/bitcoin

eBPF Linux tracepoints Utils/log/libs

Instead of writing ad-hoc logging everywhere (eg: #19509), we can take advantage of linux user static defined traces, aka. USDTs ( not the stablecoin :sweat_smile: )

The linux kernel can hook into these tracepoints at runtime, but otherwise they have little to no performance impact. Traces can pass data which can be printed externally via tools such as bpftrace. For example, here's one that prints incoming and outgoing network messages:

Examples

Network Messages

#!/usr/bin/env bpftrace

BEGIN
{
  printf("bitcoin net msgs\n");
  @start = nsecs;
}

usdt:./src/bitcoind:net:push_message
{
  $ip = str(arg0);
  $peer_id = (int64)arg1;
  $command = str(arg2);
  $data_len = arg3;
  $data = buf(arg3,arg4);
  $t = (nsecs - @start) / 100000;

  printf("%zu outbound %s %s %zu %d %r\n", $t, $command, $ip, $peer_id, $data_len, $data);

  @outbound[$command]++;
}

usdt:./src/bitcoind:net:process_message
{
  $ip = str(arg0);
  $peer_id = (int64)arg1;
  $command = str(arg2);
  $data_len = arg3;
  $data = buf(arg3,arg4);
  $t = (nsecs - @start) / 100000;

  printf("%zu inbound %s %s %zu %d %r\n", $t, $command, $ip, $peer_id, $data_len, $data);

  @inbound[$ip, $command]++;
}

$ sudo bpftrace netmsg.bt

output: https://jb55.com/s/b11312484b601fb3.txt

if you look at the bottom of the output you can see a histogram of all the messages grouped by message type and IP. nice!

IBD Benchmarking

#!/usr/bin/env bpftrace
BEGIN
{
  printf("IBD to 500,000 bench\n");
}

usdt:./src/bitcoind:CChainState:ConnectBlock
{
  $height = (uint32)arg0;

  if ($height == 1) {
    printf("block 1 found, starting benchmark\n");
    @start = nsecs;
  }

  if ($height >= 500000) {
    @end = nsecs;
    @duration = @end - @start;
    exit();
  }
}

END {
  printf("duration %d ms\n", @duration / 1000000)
}

This one hooks into ConnectBlock and prints the IBD time to height 500,000 starting from the first call to ConnectBlock

Userspace static tracepoints give lots of flexibility without invasive logging code. It's also more flexible than ad-hoc logging code, allowing you to instrument many different aspects of the system without having to enable per-subsystem logging.

Other ideas: tracepoints for lock contention, threads, what else?

Let me know what ya'll think and if this is worth adding to bitcoin.

TODO

  • [ ] docs?
  • [x] Integrate systemtap-std-dev/libsystemtap into build (provides the <sys/sdt.h> header)
  • [x] ~dtrace macos support? (is this still a thing?)~ going to focus on linux for now
+64 -0

30 comments

3 changed files

jb55

pr closed time in 2 hours

push eventbitcoin-core/gui

William Casarin

commit sha 933ab8a720cb9b3341adec4109cffb6dc5b322a5

build: detect sys/sdt.h for eBPF tracing

view details

William Casarin

commit sha 22eb7930a6ae021438aa0b8e750170534944f296

tracing: add tracing framework Signed-off-by: William Casarin <jb55@jb55.com>

view details

Wladimir J. van der Laan

commit sha 43f3ada27b835e6b198f9a669e4955d06f5c4d08

Merge #19866: eBPF Linux tracepoints 22eb7930a6ae021438aa0b8e750170534944f296 tracing: add tracing framework (William Casarin) 933ab8a720cb9b3341adec4109cffb6dc5b322a5 build: detect sys/sdt.h for eBPF tracing (William Casarin) Pull request description: Instead of writing ad-hoc logging everywhere (eg: #19509), we can take advantage of linux user static defined traces, aka. USDTs ( not the stablecoin :sweat_smile: ) The linux kernel can hook into these tracepoints at runtime, but otherwise they have little to no performance impact. Traces can pass data which can be printed externally via tools such as bpftrace. For example, here's one that prints incoming and outgoing network messages: # Examples ## Network Messages ``` #!/usr/bin/env bpftrace BEGIN { printf("bitcoin net msgs\n"); @start = nsecs; } usdt:./src/bitcoind:net:push_message { $ip = str(arg0); $peer_id = (int64)arg1; $command = str(arg2); $data_len = arg3; $data = buf(arg3,arg4); $t = (nsecs - @start) / 100000; printf("%zu outbound %s %s %zu %d %r\n", $t, $command, $ip, $peer_id, $data_len, $data); @outbound[$command]++; } usdt:./src/bitcoind:net:process_message { $ip = str(arg0); $peer_id = (int64)arg1; $command = str(arg2); $data_len = arg3; $data = buf(arg3,arg4); $t = (nsecs - @start) / 100000; printf("%zu inbound %s %s %zu %d %r\n", $t, $command, $ip, $peer_id, $data_len, $data); @inbound[$ip, $command]++; } ``` $ sudo bpftrace netmsg.bt output: https://jb55.com/s/b11312484b601fb3.txt if you look at the bottom of the output you can see a histogram of all the messages grouped by message type and IP. nice! ## IBD Benchmarking ``` #!/usr/bin/env bpftrace BEGIN { printf("IBD to 500,000 bench\n"); } usdt:./src/bitcoind:CChainState:ConnectBlock { $height = (uint32)arg0; if ($height == 1) { printf("block 1 found, starting benchmark\n"); @start = nsecs; } if ($height >= 500000) { @end = nsecs; @duration = @end - @start; exit(); } } END { printf("duration %d ms\n", @duration / 1000000) } ``` This one hooks into ConnectBlock and prints the IBD time to height 500,000 starting from the first call to ConnectBlock Userspace static tracepoints give lots of flexibility without invasive logging code. It's also more flexible than ad-hoc logging code, allowing you to instrument many different aspects of the system without having to enable per-subsystem logging. Other ideas: tracepoints for lock contention, threads, what else? Let me know what ya'll think and if this is worth adding to bitcoin. ## TODO - [ ] docs? - [x] Integrate systemtap-std-dev/libsystemtap into build (provides the <sys/sdt.h> header) - [x] ~dtrace macos support? (is this still a thing?)~ going to focus on linux for now ACKs for top commit: laanwj: Tested ACK 22eb7930a6ae021438aa0b8e750170534944f296 0xB10C: Tested ACK 22eb7930a6ae021438aa0b8e750170534944f296 Tree-SHA512: 69242242112b679c8a12a22b3bc50252c305894fb3055ae6e13d5f56221d858e58af1d698af55e23b69bdb7abedb5565ac6b45fa5144087b77a17acd04646a75

view details

push time in 2 hours

push eventbitcoin/bitcoin

Andrew Chow

commit sha 42bb1ea363286b088257cabccb686ef1887c1d3b

gitian: install signapple in gitian-osx-signer.yml

view details

Andrew Chow

commit sha 95b06d21852b28712db6c710e420a58bdc1a0944

gitian: use signapple to apply the MacOS code signature

view details

Andrew Chow

commit sha f55eed251488d70d5e2e3a2965a4f8ec0c476853

gitian: use signapple to create the MacOS code signature

view details

Andrew Chow

commit sha 2c403279e2f0f7c8c27c56d4e7b0573c59571f0a

gitian: Remove codesign_allocate and pagestuff from MacOS build

view details

Wladimir J. van der Laan

commit sha f7fd76bcc0f55e4bc0d3cafd69bab4a56e882973

Merge #20880: gitian: Use custom MacOS code signing tool 2c403279e2f0f7c8c27c56d4e7b0573c59571f0a gitian: Remove codesign_allocate and pagestuff from MacOS build (Andrew Chow) f55eed251488d70d5e2e3a2965a4f8ec0c476853 gitian: use signapple to create the MacOS code signature (Andrew Chow) 95b06d21852b28712db6c710e420a58bdc1a0944 gitian: use signapple to apply the MacOS code signature (Andrew Chow) 42bb1ea363286b088257cabccb686ef1887c1d3b gitian: install signapple in gitian-osx-signer.yml (Andrew Chow) Pull request description: The MacOS code signing issues that were encountered during the 0.21.0 release cycle have shown that it is necessary for us to use a code signing tool for which the source code is available and modifiable by us. Given that there appears to not be such a tool available, I have written such a tool, [signapple](https://github.com/achow101/signapple), that we can use. This tool is able to create a valid MacOS code signature, detach it in a way that we were doing previously, and attach it to the unsigned binary. This tool can also verify that the signature is correct. This PR implements the usage of that tool in the gitian build for the code signed MacOS binary. The code signer will use this tool to create the detached signature. Gitian builders will use this tool to apply the detached signature. The `gitian-osx-signer.yml` descriptor has been modified to install this tool so that the `detached-sig-apply.sh` script can use it. Additionally, the `codesign_allocate` and `pagestuff` tools are no longer necessary so they are no longer added to the tarball used in code signing. Lastly, both the `detached-sig-create.sh` and `detached-sig-apply.sh` scripts are made to be significantly less complex and to not do unexpected things such as unpacking an already unpacked tarball. The detached code signature that signapple creates is almost identical to that which we were previously creating. The only difference is that the cpu architecture name is included in the extension (e.g. we have `bitcoin-qt.x86_64sign` instead of `bitcoin-qt.sign`). This was done in order to support signing universal binaries which we may want to do in the future. However signapple can still apply existing code signatures as it will accept the `.sign` extension. If it is desired, it can be modified to produce signatures with just the `.sign` extension. However I do not think it is necessary to maintain compatibility with the old process. ACKs for top commit: laanwj: Code review ACK 2c403279e2f0f7c8c27c56d4e7b0573c59571f0a Tree-SHA512: 2a0e01e9133f8859b9de26e7e8fe1d2610d2cbdee2845e6008b12c083c7e3622cbb2d9b83c50a269e2c3074ab95914a8225d3cd4108017f58b77a62bf10951e0

view details

push time in 2 hours

PR merged bitcoin/bitcoin

gitian: Use custom MacOS code signing tool Build system Scripts and tools

The MacOS code signing issues that were encountered during the 0.21.0 release cycle have shown that it is necessary for us to use a code signing tool for which the source code is available and modifiable by us. Given that there appears to not be such a tool available, I have written such a tool, signapple, that we can use. This tool is able to create a valid MacOS code signature, detach it in a way that we were doing previously, and attach it to the unsigned binary. This tool can also verify that the signature is correct.

This PR implements the usage of that tool in the gitian build for the code signed MacOS binary. The code signer will use this tool to create the detached signature. Gitian builders will use this tool to apply the detached signature. The gitian-osx-signer.yml descriptor has been modified to install this tool so that the detached-sig-apply.sh script can use it. Additionally, the codesign_allocate and pagestuff tools are no longer necessary so they are no longer added to the tarball used in code signing. Lastly, both the detached-sig-create.sh and detached-sig-apply.sh scripts are made to be significantly less complex and to not do unexpected things such as unpacking an already unpacked tarball.

The detached code signature that signapple creates is almost identical to that which we were previously creating. The only difference is that the cpu architecture name is included in the extension (e.g. we have bitcoin-qt.x86_64sign instead of bitcoin-qt.sign). This was done in order to support signing universal binaries which we may want to do in the future. However signapple can still apply existing code signatures as it will accept the .sign extension. If it is desired, it can be modified to produce signatures with just the .sign extension. However I do not think it is necessary to maintain compatibility with the old process.

+24 -67

9 comments

4 changed files

achow101

pr closed time in 2 hours

more