[{"data":1,"prerenderedAt":591},["ShallowReactive",2],{"project-29230068":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":46,"post_text":48,"what":49,"said":94,"maker_in_thread":216,"shape":224,"grid":228,"attempts":552,"same_week":553,"maker_shows":47,"maker_hidden":583,"reader_version":584,"card":585},"29230068","Mako","a full Bitcoin implementation in C","title","Show HN: Mako – a full Bitcoin implementation in C","https:\u002F\u002Fgithub.com\u002Fchjj\u002Fmako","github.com","chjj",1636998047,2021,239,124,166,2533,7,"notable","finance_crypto","bitcoin full node","cli",[24,25,26,27],"bitcoin node","bitcoin c implementation","lmdb","bitcoind alternative","mixed",0.172,{"positive":31,"neutral":32,"mixed":33,"critical":34},18,17,1,9,45,{"execution":37,"design":39,"idea":42,"docs":43,"privacy":44},{"positive":38,"critical":33},3,{"positive":40,"critical":41},4,5,{"positive":40,"critical":33},{"positive":33,"critical":33},{"positive":45,"critical":33},0,[41,38,38,41,41,45,45,45,45,41,33,33,33,45,45,45,33,47,45,41,38,41,41,38,38,45,38,41,33,41,41,41,38,45,45,45,38,45,33,41],2,null,{"problem":50,"audience":48,"pricing":48,"motivation":57,"time_to_build":63,"stack":72,"openness":91,"stage":92,"team_size":93},{"value":51,"source":52,"evidence":53},"Provides an alternative full Bitcoin node implementation to Bitcoin Core","maker",[54],{"id":55,"by":11,"text":56},"29234028","Right. Perhaps I should explain this in the readme. To be clear: Libbtc is a small bitcoin library meant for everyday things: signing transactions, maintaining an SPV wallet,…",{"value":58,"source":52,"evidence":59},"Maker's second reimplementation of the Bitcoin protocol, following bcoin, built in C",[60],{"id":61,"by":11,"text":62},"29235573","My first bitcoin reimplementation was written in node.js and called bcoin[1]. So this is my second time reimplementing the bitcoin protocol, albeit in a very different language.…",{"value":64,"source":52,"evidence":65},"Built over the past few months with long sleep-deprived stretches",[66,69],{"id":67,"by":11,"text":68},"29232480","Thanks. This was definitely the hardest project I've worked on in my life. I fear I may have shaved a few years off my life with all of the all-nighters I pulled with this, so…",{"id":70,"by":11,"text":71},"29232081","Yeah, I'm embarrassed about that. It's way behind on tests. The past 2 months of limited sleep were a massive scramble just trying to get everything implemented and trying to get…",[73,81,85],{"value":74,"source":52,"evidence":75},"C",[76,78],{"id":77},"post",{"id":79,"by":11,"text":80},"29234149","I considered using leveldb initially, but that would require a C++ compiler and it also requires linking to libstdc++. So at that point, you might as well just write the project…",{"value":82,"source":52,"evidence":83},"LMDB",[84],{"id":79,"by":11,"text":80},{"value":86,"source":52,"evidence":87},"libtorsion",[88],{"id":89,"by":11,"text":90},"29232411","Most of the crypto is from my more general crypto library libtorsion: https:\u002F\u002Fgithub.com\u002Fbcoin-org\u002Flibtorsion I originally wanted to vendor my libtorsion code and link to it, but…","open_source","beta","solo",{"praise":95,"objections":122,"requests":159,"questions":173,"alternatives":195},[96,108,115],{"value":97,"source":98,"evidence":99},"Impressive amount of work by a single developer","commenter",[100,104],{"id":101,"by":102,"text":103},"29232252","zackham","This looks like a herculean effort over just the past few months. Congratulations on hitting this milestone and hopefully you can take a breather and tie up loose ends at a more…",{"id":105,"by":106,"text":107},"29235686","cantrevealname","Call me old school, but I like looking at the number of lines of code to get a feel for how big of a project something is. Mako[1] is 265,618 lines of code. The most widely…",{"value":109,"source":98,"evidence":110},"Clean, well-commented crypto primitives useful for study",[111],{"id":112,"by":113,"text":114},"29232322","jazzyjackson","I’m loving the well commented and standalone inplementations of crypto-primatives, will definitely be studying these. One question, in src\u002Fcrypto\u002Frand.c:25 you have a standalone…",{"value":116,"source":98,"evidence":117},"Builds cleanly without warnings",[118],{"id":119,"by":120,"text":121},"29232481","sizzzzlerz","Cloned and built on my Mac without any issues. Everything compiled and linked without warnings. A huge plus in my opinion. Other than stating that it builds two executables,…",[123,131,145,152],{"value":124,"source":98,"evidence":125},"Test coverage is lacking",[126,130],{"id":127,"by":128,"text":129},"29231970","tmaly","This looks super interesting. One thing that kinda bothers me is that most of the tests are just #include \u003Cstdint.h> #include \u003Cstdlib.h> #include \u003Cstring.h> #include…",{"id":70,"by":11,"text":71},{"value":132,"source":98,"evidence":133},"Terse variable names hurt readability",[134,138,142],{"id":135,"by":136,"text":137},"29234424","SavantIdiot","Cool to study. Disappointed there are zero comments and the most terse variable names as possible. Almost like it was js-minified.",{"id":139,"by":140,"text":141},"29234607","sanderjd","This is a bad convention. Instead of `x` and `z`, you should describe what those pointers are meant to represent. I get that everything is subjective, but some things are…",{"id":143,"by":140,"text":144},"29234894","Your english language description of it gives some good clues to the alternative: ``` int btc_tx_import(btc_tx_t *transaction, const uint8_t *raw_transaction, size_t…",{"value":146,"source":98,"evidence":147},"Documentation is lacking",[148,149],{"id":119,"by":120,"text":121},{"id":150,"by":11,"text":151},"29232594","Still experimental and documentation is lacking, but right now the CLI behavior is almost identical to `bitcoind` and `bitcoin-cli`. So, for example, `$ makod -datadir=foobar…",{"value":153,"source":98,"evidence":154},"C is risky to expose to the internet",[155],{"id":156,"by":157,"text":158},"29232255","nynx","This is very impressive, but I’ll be honest, I wouldn’t want to expose any new software written in C to the internet.",[160,168],{"value":161,"source":98,"evidence":162},"Add documentation and explain the project's differences from alternatives",[163,167],{"id":164,"by":165,"text":166},"29233509","potiuper","Not to belittle the work, but it is always prudent to research what the other implementations are before possibly doing duplicate work and providing that comparison along with…",{"id":119,"by":120,"text":121},{"value":169,"source":98,"evidence":170},"Use more descriptive variable names",[171,172],{"id":139,"by":140,"text":141},{"id":143,"by":140,"text":144},[174,181,188],{"value":175,"source":98,"evidence":176},"Why C rather than Go or another language",[177],{"id":178,"by":179,"text":180},"29235778","37ef_ced3","I've been writing C for two decades. But in recent years I have used Go as a replacement for C whenever possible. I think of Go as an improved C, with slightly different…",{"value":182,"source":98,"evidence":183},"Can it participate in the real Bitcoin network",[184],{"id":185,"by":186,"text":187},"29234398","atarian","can something like this actually participate in the real bitcoin network or does everyone have to run the same client?",{"value":189,"source":98,"evidence":190},"What is the project's data storage choice and why",[191],{"id":192,"by":193,"text":194},"29233466","cfferry","This look cool! great job, congrats. What are you using as data storage? I understand btcd uses leveldb, are you using something similar?",[196,200,204,208,212],{"value":197,"source":98,"evidence":198},"Bitcoin Core",[199],{"id":105,"by":106,"text":107},{"value":201,"source":98,"evidence":202},"btcd",[203],{"id":192,"by":193,"text":194},{"value":205,"source":98,"evidence":206},"picocoin",[207],{"id":164,"by":165,"text":166},{"value":209,"source":98,"evidence":210},"libbtc",[211],{"id":55,"by":11,"text":56},{"value":213,"source":52,"evidence":214},"bcoin",[215],{"id":61,"by":11,"text":62},{"comments":31,"answered":217,"key":218},10,[219,220,223],{"id":67,"text":68},{"id":221,"text":222},"29234075","No deadline. I just have a tendency towards obsession when I'm working on a project I'm very interested in. I tend to get into a kind of manic phase where I can't sleep even if I…",{"id":150,"text":151},{"commenters":225,"max_depth":34,"maker_replies":31,"first_comment_mins":226,"lifespan_hours":227},79,143,31,[229,231,232,236,237,241,244,248,252,256,260,263,265,268,271,274,276,278,281,283,286,289,292,295,298,301,303,304,306,309,311,312,314,316,318,320,321,323,326,328,331,333,336,339,342,345,347,349,352,355,357,361,364,367,370,372,376,379,383,386,387,389,392,394,395,398,401,403,406,408,411,415,418,420,423,425,427,429,431,433,436,440,445,450,454,459,461,464,466,468,472,474,476,478,480,483,486,489,491,495,498,502,505,507,510,513,516,518,521,524,527,530,533,536,539,542,545,548,549],[101,45,41,230,102,45],"maker\u002Fpositive\u002Fnone",[67,45,45,230,11,33],[233,45,38,234,235,45],"29233362","maker\u002Fneutral\u002Fnone","spuz",[221,45,45,234,11,33],[238,45,45,239,240,45],"29244962","other\u002Fneutral\u002Fnone","HappySweeney",[242,45,45,239,243,45],"29234083","johnnyApplePRNG",[245,45,38,246,247,45],"29236007","maker\u002Fneutral\u002Fexecution","bertr4nd",[249,45,38,250,251,45],"29241626","maker\u002Fneutral\u002Fdesign","b20000",[253,45,41,254,255,45],"29234277","project\u002Fpositive\u002Fidea","debo_",[257,45,45,258,259,45],"29234328","commenter\u002Fneutral\u002Fnone","0des",[261,45,41,254,262,45],"29236280","anonporridge",[105,33,41,264,106,45],"project\u002Fpositive\u002Fexecution",[266,33,45,239,267,45],"29235911","rweichler",[269,33,45,258,270,45],"29235955","parhamn",[272,33,45,258,273,45],"29236369","kazinator",[275,33,45,258,267,45],"29247745",[277,33,45,258,273,45],"29248309",[279,33,45,239,280,45],"29236281","thangalin",[282,33,45,239,273,45],"29236328",[284,33,45,239,285,45],"29245234","marto1",[287,33,45,239,288,45],"29235962","latchkey",[290,33,45,239,291,45],"29236156","bluejekyll",[293,33,45,239,294,45],"29238707","Jach",[296,33,45,239,297,45],"29243000","slmjkdbtl",[299,33,45,239,300,45],"29238751","oars",[302,33,45,239,251,45],"29241618",[119,47,41,264,120,45],[150,47,45,305,11,33],"maker\u002Fneutral\u002Fdocs",[307,47,38,246,308,45],"29237889","inter_netuser",[127,38,38,310,128,45],"project\u002Fmixed\u002Fexecution",[70,38,45,246,11,33],[135,40,33,313,136,45],"project\u002Fcritical\u002Fdesign",[315,40,45,250,11,33],"29234571",[139,40,33,317,140,45],"maker\u002Fcritical\u002Fdesign",[319,40,45,250,11,33],"29234689",[143,40,33,317,140,45],[322,40,45,250,11,33],"29234963",[324,40,45,239,325,45],"29235617","nothrowaways",[327,40,45,239,140,45],"29236124",[329,40,45,239,330,45],"29245720","freemint",[332,40,45,239,140,45],"29246125",[334,40,45,335,251,45],"29241675","commenter\u002Fneutral\u002Fdesign",[337,40,45,335,338,45],"29241921","defgeneric",[340,40,45,335,341,45],"29234789","basedbase",[343,40,45,344,140,45],"29235015","commenter\u002Fcritical\u002Fdesign",[346,40,45,335,338,45],"29242097",[348,40,45,335,140,45],"29246217",[350,40,33,351,251,45],"29241690","project\u002Fcritical\u002Fdocs",[353,40,33,313,354,45],"29234685","gregschlom",[356,40,45,250,11,33],"29234858",[358,40,38,359,360,45],"29235021","project\u002Fneutral\u002Fdesign","ZephyrBlu",[362,40,33,313,363,45],"29235274","optymizer",[365,40,38,359,366,45],"29236363","matvore",[368,40,45,344,369,45],"29236753","smt88",[371,40,45,335,366,45],"29237182",[373,40,45,374,375,45],"29240998","other\u002Fneutral\u002Fdesign","jrop",[377,40,45,239,378,45],"29235035","ancode",[380,41,45,381,382,45],"29237056","other\u002Fneutral\u002Fidea","X6S1x6Okd1st",[112,384,41,385,113,45],6,"project\u002Fpositive\u002Fdocs",[89,384,45,305,11,33],[178,18,38,388,179,45],"project\u002Fneutral\u002Fidea",[390,18,38,388,391,45],"29236084","thinkmassive",[192,393,41,230,193,45],8,[79,393,45,359,11,33],[396,393,38,359,397,45],"29234990","avar",[399,393,45,258,400,45],"29236117","VHRanger",[402,393,41,230,193,45],"29236563",[404,34,41,230,405,45],"29235189","andrewqu",[61,34,45,407,11,33],"project\u002Fneutral\u002Fdocs",[409,34,38,305,410,45],"29237626","AlexanderTheGr8",[412,34,45,413,414,45],"29246029","other\u002Fneutral\u002Fdocs","timobile",[416,217,38,388,417,45],"29233553","yardstick",[419,217,45,388,11,33],"29234056",[421,217,38,388,422,45],"29234262","janzer",[424,217,45,239,255,45],"29234380",[426,217,45,239,11,33],"29234438",[428,217,45,239,255,45],"29234534",[430,217,45,239,11,33],"29234623",[185,432,38,388,186,45],11,[434,432,38,388,435,45],"29234471","rasengan",[437,438,41,230,439,45],"29233215",12,"jlrubin",[441,442,41,443,444,45],"29243922",13,"project\u002Fpositive\u002Fnone","ejanus",[446,447,38,448,449,45],"29237603",14,"project\u002Fneutral\u002Fnone","vegai_",[451,452,45,239,453,45],"29238284",15,"gvv",[455,456,33,457,458,45],"29232109",16,"project\u002Fcritical\u002Fexecution","beebmam",[460,456,45,234,11,33],"29232132",[462,456,41,264,463,45],"29232289","arcticbull",[465,456,45,234,11,33],"29234263",[467,456,45,335,273,45],"29234293",[469,456,41,470,471,45],"29232332","project\u002Fpositive\u002Fdesign","MonkeyClub",[473,456,45,407,11,33],"29234334",[475,456,41,470,294,45],"29234236",[477,456,38,359,273,45],"29234621",[479,456,41,470,338,45],"29232319",[481,456,45,258,482,45],"29233750","isaiahg",[484,456,45,258,485,45],"29233431","dang",[487,456,41,470,488,45],"29235402","chj",[156,32,33,490,157,45],"project\u002Fcritical\u002Fprivacy",[492,32,45,493,494,45],"29232296","commenter\u002Fneutral\u002Fprivacy","0xFFFFFFFFF",[496,32,45,258,497,45],"29233279","roca",[499,32,45,500,501,45],"29234027","other\u002Fneutral\u002Fprivacy","pizza234",[503,32,45,239,504,45],"29234637","postalrat",[506,32,45,258,157,45],"29235020",[508,32,45,258,509,45],"29246153","UncleMeat",[511,32,45,239,512,45],"29235207","shatteredspace",[514,32,45,239,515,45],"29235407","syvolt",[517,32,45,239,512,45],"29235604",[519,32,45,239,520,45],"29237856","saagarjha",[522,32,38,523,113,45],"29232369","project\u002Fneutral\u002Fprivacy",[525,32,45,239,526,45],"29236270","kahlonel",[528,32,45,239,529,45],"29242125","__vim__",[531,31,45,239,532,45],"29234104","amelius",[534,31,45,239,535,45],"29234122","Kranar",[537,31,45,239,538,45],"29234628","fabianfabian",[164,540,33,541,165,45],19,"project\u002Fcritical\u002Fidea",[543,540,45,258,544,45],"29233784","auggierose",[546,540,41,254,547,45],"29233923","vmception",[55,540,45,388,11,33],[550,540,41,254,551,45],"29235972","traceddd",[],[554,559,564,569,573,578],{"id":555,"name":556,"points":557,"category":558},"29198205","Long Range E-Bike",876,"hardware",{"id":560,"name":561,"points":562,"category":563},"29254147","Browserflow",707,"dev_tools",{"id":565,"name":566,"points":567,"category":568},"29217622","docker-qemu-win2000",395,"infrastructure",{"id":570,"name":571,"points":572,"category":563},"29242466","Budibase",280,{"id":574,"name":575,"points":576,"category":577},"29234636","TextFrame",246,"creative",{"id":579,"name":580,"points":581,"category":582},"29244453","Outage Bingo",224,"games",false,"v2",{"id":586,"name":5,"line":6,"ai":583,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":587,"top":18,"kw":588,"maker":11,"domain":10,"tier":19,"attempts":45,"strip":589,"url":9,"mix":590,"praise":97,"objection":124,"sub":21},29230068,0.17,[24,25,26,27],"5335500005111000120535533035155530003015",[31,32,33,34],1794036613207]