Please login or register.

anonimal's Kovri Full Time Development funding thread


funded of XMR7,245.00 target

81 individual contributions
100.02185031263% Funded
14 payouts
XMR946.58 balance available
86.937525617991% Paid Out

Milestones 14/16

  • First tranche

    Completion Date: Thursday 01 December 2016

    Funds awarded: 6.25% (~XMR452.91)

  • Second tranche

    Completion Date: Saturday 28 January 2017

    Funds awarded: 6.25% (~XMR452.91)

  • Third tranche

    Completion Date: Sunday 26 March 2017

    Funds awarded: 6.25% (~XMR452.91)

  • Fourth tranche

    Completion Date: Friday 05 May 2017

    Funds awarded: 6.25% (~XMR452.91)

  • Fifth tranche

    Completion Date: Saturday 24 June 2017

    Funds awarded: 6.25% (~XMR452.91)

  • Sixth tranche

    Completion Date: Monday 31 July 2017

    Funds awarded: 6.25% (~XMR452.91)

  • Seven tranche

    Completion Date: Friday 15 September 2017

    Funds awarded: 6.25% (~XMR452.91)

  • Eighth tranche

    Completion Date: Tuesday 07 November 2017

    Funds awarded: 6.25% (~XMR452.91)

  • Ninth tranche

    Completion Date: Saturday 27 January 2018

    Funds awarded: 6.25% (~XMR452.91)

  • Tenth tranche

    Completion Date: Saturday 10 March 2018

    Funds awarded: 6.25% (~XMR452.91)

  • Eleventh tranche

    Completion Date: Monday 11 June 2018

    Funds awarded: 6.25% (~XMR452.91)

  • Twelfth tranche

    Completion Date: Wednesday 01 August 2018

    Funds awarded: 6.25% (~XMR452.91)

  • Thirteenth tranche

    Funds awarded: 6.25% (~XMR452.91)

  • Fourteenth tranche

    Funds awarded: 6.25% (~XMR452.91)

  • Fifteenth tranche

    Funds awarded: 6.25% (~XMR452.91)

  • Sixteenth tranche

    Funds awarded: 6.25% (~XMR452.91)

Payouts 14

  • 450 XMR (Tuesday 06 December 2016)
  • 450 XMR (Thursday 02 February 2017)
  • 450 XMR (Wednesday 29 March 2017)
  • 450 XMR (Monday 08 May 2017)
  • 450 XMR (Monday 26 June 2017)
  • 450 XMR (Friday 11 August 2017)
  • 450 XMR (Tuesday 26 September 2017)
  • 450 XMR (Thursday 16 November 2017)
  • 450 XMR (Monday 29 January 2018)
  • 450 XMR (Wednesday 14 March 2018)
  • 450 XMR (Monday 25 June 2018)
  • 450 XMR (Monday 06 August 2018)
  • 450 XMR (Wednesday 14 November 2018)
  • 450 XMR (Tuesday 22 January 2019)

Monero and Kovri

From crypto-currency to simple message exchange, we rely on hardened privacy systems to guarantee that our transactions are anonymous and secure.

As Monero is a leader in both privacy-aware currency and community, the logical response to Monero's anonymity question is to implement a decentralized, anonymous internet.

The solution? Kovri.

The Kovri I2P Router Project aims to integrate I2P technology into Monero to ensure that every transaction and communication meets the highest standards of anonymity possible.

The Importance of Kovri

I cannot reiterate enough the importance of Kovri as both an implementation of a viable anonymous network and as an alternative to Tor.

Tor has an annual multi-million USD budget with a multi-million number user-base. Tor is well-researched and continues to garner massive media attention. While I love Tor tremendously and will defend her with tooth and nail, at this time of writing there are two issues that concern me the most with regard to the Tor project:

  1. With new management, the current state of the project is in questionable flux: core volunteers who have been with the project since its very early years are uprooting and leaving, there are publicly known conflicts within the organization, there are many rumors (both founded and unfounded) about U.S. government infiltration
  2. Tor's Achilles's heel: authorities, consensus, and flow-based onion-routing (as current implemented in Tor): they are not truly decentralized

While the issues in point 1 may be temporary or purely tin-hat, it's unfair to both the project and the entire planet to have a majority of the world's anonymity-needs resting on the shoulders of a single project; not to mention, the mere idea is very dangerous.

The issues inherent in point 2 are not easily addressed nor may they ever be addressed. Attempting to decentralize Tor by removing Directory Authorities and other technical aspects of current Tor design would be like genetically modifying an apple to become an orange after the apple has been fully formed. As interesting as that may be, why do such a thing when one can simply eat a natural-born orange?

How Kovri will improve the I2P experience

The Java implementation of I2P is the known worldwide. It is the original implementation and standard of which all other Garlic Routing implementations have followed and continue to follow. Over the years, there have been several notable complaints about the java I2P project with the biggest being: it's in java, and it's not easily usable.

Kovri aims to address these issues by implementing I2P entirely in C++ and, in addition to providing extensive & easy-to-understand documentation, implementing user-friendly interfaces.

While it's too soon to discuss details of GUI integration, Kovri will have an easy-to-use interface integrated with Monero's GUI in addition to being a stand-alone I2P router (so you don't need Monero to use it). This will be all-around useful to both I2P and Monero as it will increase XMR transaction obfuscation while strengthening the I2P network.

How Kovri will increase Monero's market value

It's simple: more users, more trust, more value.

Kovri + RingCT technology will guarantee confidence with every transaction; ensuring that they stay private and anonymous. By integrating Kovri by default, every user will benefit from an the extra layer of I2P anonymity.

In the future, after a beta release, we plan on having Kovri 'on' by default. Until then, Kovri will be optional (though you can use the stand-alone router now).

Why I should be funded for this project

I've been with the project since before the beginning and, with the help of key contributors, led the project to its birth. I'm proud and fortunate enough to say that one year ago (soon before Kovri was born), I had told fluffypony that I would here "for the long haul" - and here I am today. I have spent all my free time over the past year on Kovri and have lost much sleep as a result - all without asking for any donations or payments in return (though I do appreciate the donations that I have received).

I've gained relationships within the Monero community and a wealth of knowledge that comes with developing an I2P implementation in C++; so there has been that reward, but I'm currently at the point where I won't be able to meaningfully contribute to Kovri unless I start to receive full-time (or at least part-time) funding.

Funding will allow me to continue to lead the project and to do what I've been doing - but much more of it.

The current state of Kovri is not in the same state as Monero. Kovri needs a lot of work in order to be brought into beta and an eventual stable release. I2P specifications do not cover every aspect I2P or implementation and the documentation itself could be rewritten in key areas to better aid developers. Since Kovri was originally forked from i2pd, much of the present code-base was poorly designed and poorly written; so this makes development more difficult than it should be (we've been able to fix many of the issues but many still remain (see the issues tracker)).

In addition to resolving bugs and missing implementation, funding will allow me to:

  • Code, code, code!
    • We have many issues that need to be fixed
    • We have many features that need to be implemented
    • I repeat: Kovri is not in the same place as Monero was when Monero was first born
  • Guarantee Kovri/Monero integration
    • Integration with monerod
    • Integration with GUI
  • Building/releasing on same platforms as Monero
    • Linux/OSX/Windows
    • i686/amd64/armv7/armv8
  • Project management
    • Ensuring that we set and meet release deadlines
    • Preparing and leading bi-weekly meetings
    • Implementing Quality Assurance
  • Address the massive amount of technical details that come with implementing I2P
    • Research improving I2P and overlay-network security
    • Crypto research/implementation
    • Creating/improving documentation
    • Contributing to existing proposals
    • Opening new proposals

...and much, much more.

To gain a sense of how development has functioned, you can:

Payout proposal

  • 5 XMR/hour
  • 1449 hours / 30 hours per week
  • 16 milestones every 90 hours
  • Total cost: 7245 XMR

The amounts posted here are motivated by current market volatility but will guarantee another year's work on the project. To work on Kovri full-time is a gamble but, like everyone else here, I believe in Monero and believe that Kovri will have a positive impact on Monero's value.

Securing Monero's future

If Kovri doesn't get more attention and development, Kovri will be Monero's weakest link. We cannot let that happen. 30 hours is not enough to make this happen, so I will have to volunteer more than that in order to meet our goals (12 hour Kovri days are not unheard of). I must reiterate that even if full-time, we need more developers in order to fullfill Kovri's vision.

Funding will also allow me to reach out to other developers, continue to aid in upstream library development/bug fixes when needed, and become more engaged with EinMByte (an experienced, invaluable core contributor), zzz (lead dev for java I2P), and the I2P community at large in order to make Kovri happen.

Everyone is welcome to visit #kovri and #kovri-dev and ask as many questions as you'd like. I'll do my best to respond quickly and informatively.

Replies: 46
anonimal edited 7 months ago Weight: 57 | Link [ - ]

Finally: an official statement

Because of a comment from one of my donors, and other recent events, I've re-opened negotiations for the remainder of my contract. This issue is between me and my donors and no one else (although moneromooo, hyc, and MRL may be contacted for technical affirmations).

For the important backstory to this post, and some information regarding recent events, read my comments here, and here (trigger warning: bring your popcorn), and the original taken-out-of-context paste that has set everything on fire (as seen in my "Milestone 15" post below). If you want a clear, level-headed, technical understand of what the hell is going on; you can also contact Monero Project lead developer moneromooo as he understands the technical aspects involved.

TL;DR: I love you all, but, with that said;

TL;DR: I've provided 99% of everything I've been asked to do for Kovri but the remaining 1% has been deprecated and should not happen. I've listed the reasons above and below. I asked to be funded for that remaining 1% on a new, actual solution (as posted below); but there are too many questions at this point. What is not a question though is that Kovri is 100% done in terms of my funding (if we are not "baking-in" the router or if we are not interested in more Kovri fixes and development). Regardless, Monero Project needs to focus on moving towards an actual solution: Sekreta. Sekreta will also deprecate Monero's SOCKS proxy; the SOCKS proxy of which takes the incentive out of "baking-in" Kovri to begin with (for the longest time, the proxy was never supposed to happen because of fluffypony's "baked-in I2P" pipe-dream but now both have now been deprecated by Sekreta). There is such an incredible lack of understanding within Monero about Sekreta technology because nearly everyone in the community is not an internet-anonymity engineer nor specialist so, the responses have been mixed, somewhat uninformed, and hostile (with the exception of moneromooo, MRL, and the founding community). I don't blame anyone in community though: cryptocurrencies are surrounded by scams and shit at all times. As such, I've empirically proven that Sekreta is not a scam nor is it shit but, rather, an actual solution - a solution that we all wish we had years ago before I started Kovri. Now, it's time to move forward. Erwache, mein monerochen.

Note: aside from the other technical reasons I gave in the links above, the reasons why Kovri should not be "baked-into" Monero at this time (or ever, because that's been deprecated by Sekreta:

  • Conflicting minimum requirements, needed for all supported systems:
    • Boost 1.67
    • CMake 3.5
    • C++14 capable compiler
  • Monero will need to have rolling releases in order to stay up to date with Kovri development. fluffypony is barely around to release normal releases let alone rolling releases.

Alone, these issues aren't insurmountable but do take into consideration my reasons in the links above. Also, Sekreta already has less dependencies and will have more stable interfaces than Kovri for any "baked-in" integration.

Regarding my release of Sekreta

Because of the response from some of the most subversive elements of this Monero "community", but also the positive response by seasoned Monero researchers/developers and founding community, and the neutral/limited/no responses from my donors; I've decided to take Sekreta off the table for Monero Project for now. This doesn't mean that there won't be collaboration; this just means that Monero won't get any points for innovation at this point in time - of which Monero sorely needs right now.

Regarding the remainder of this FFS contract

One of my donors has brought up a very good point:

2019-01-04 10:25:42     thrmo   thanks for the thorough reply anonimal, and to be clear I wasn't implying you were malicious. Having said that I wish sekreta the best, despite having donated to Kovri 1.0 it always seemed like a fools errand for me, so I'm also glad to see it go.

And indeed: "baking-in" Kovri is a fool's errand at this point because of Sekreta (you can instead "bake-in" Sekreta and have access to every existing anonymity system, not just Kovri). Monero will be doing an incredible disservice to itself by becoming "tribal" to a single anonymity network or by allowing any single-network usage (via SOCKS) or by "baking-in" any specific implementations.

Now, since this issue is regarding my two remaining milestones, let's consider the options.

One possible option is to back-pay me for services rendered to Monero Project from 2015-2019. Why? Well, Monero Project failed to meet their end of this contract in terms of providing labor for Kovri code development and support as promised by fluffypony before we forked (note: luigi has always been 100% responsive in payout and I'm thankful for that). Because I was told that this project relationship would be both a mutually exclusive and beneficial by fluffypony, I dedicated my life to Monero Project since 2015 in order to ensure the success of both the projects and for my future investments (that and because of labors of love) - but I never received the support I was told I would receive. As a result, I'm forced to bring numbers into this equation in order to negotiate a fair trade for my time and labor.

But first, a little background; since most of this "community" has not been around as long as myself and a good chunk of others:


When I arrived in 2015 to work on Monero Project, Monero was a shit-coin with huge potential. Raw and beautiful, it was exciting. Part of the excitement was that it was always pushing forward with momentous innovations. With my help along with moneromooo (who has also dedicated his life to this project), hyc, fluffypony, a small team of incredible researchers and developers, passionate miners and node operators, and a talented founding community; Monero became the #1 leading privacy technology in the world.

From everything trivial to my meeting template (which is still used to this day), to implementing CI and demanding greater CI (which eventually happened), to the creation and extensive usage of the Meta repo, to the maintenance and auditing of dependencies (as proven throughout the various Monero repositories), to maintaining the Monero AUR package for 10's of thousands of Arch Linux users around the world, to Monero code security auditing (when I had the time) and suggesting fixes, to code collaboration and contribution across nearly every single Monero Project repository (go look at the git-log and the github issues/PRs), to implementing Monero's first-and-only VRP, to setting up and maintaining HackerOne and regularly collaboration on producing sensitive security fixes (some of which I can be credited for), to inviting Michael to do the Hardware Wallet (go ask him about the story, he's a great guy), to Riccardo Spagni regularly going on television and various interviews over the years calling me 1 of "2 full-time developers" as a result of all of my work - all so that the "community" had something to brag about; I've done all of this since 2015 without being paid a single XMR or any currency, above or under the table, in any capacity; zero financial reward. Zero. ZERO. Z. E. R. O. Zero financial compensation outside of Kovri (with the exception of Defcon 26 in which I was thankfully paid for travel expenses to speak about Kovri and to speak about the VRP).

But why, you ask?

First, shouldn't my Kovri payments have gone to all of that? Well, no, and they didn't. But even if they did, since no one mentioned that XMR received is subject to income tax; that issue combined with the 2018 bear market + market volatility at worst possible times during the 2018 bear market = 6 figures back taxes + 6 figures capital losses but, even if I did include those numbers, I would still be massively underpaid in any other situation or project regardless if cryptocurrency was involved (yes, I know that the markets are not anyone's responsibility here but I'm just clarifying because people seem to think I own a yacht now, or what have you).

As for why, and if you're also concerned about the Kovri timeline or payment amount, let's do a brief review:


I was told by fluffypony that, for my contract, I was to bill for all mentoring, project management, project development, promotion, education, and anything Kovri related across the now 4 kovri project repositories and beyond - and that's exactly what I've done.

Also, as part of my contract, one of the proposes of Kovri was to build a real project and an educational space, not just software. Education being a huge factor - and that's exactly what I've done.

On top of that, as part of my contract, I was told to engineer Kovri by any means necessary; using multiple languages, across multiple systems, across multiple release platforms, to audit and develop the dependencies and all code as a means to ensure stringent security methods, to implement and supervise quality assurance across the spectrum, to train every developer involved, to lead the entire project, and sooo soooo soooooooooo much more on top of everything else I mentioned above with Monero Project - which is exactly what I've done.

To add to insult to injury, I've massively under-billed all of my Kovri work because I chose to "be the better person" during the 2017 bull-run by not being a money grubbing cancer like so many in the cryptocurrency space now. So; indeed, I have won the spiritual battle but I am under-financed as a result. I take full responsibility for that.

But, the only thing I asked for in return was for Monero project to provide me help in filling all the roles that I was filling so that I can focus on code development - which was going incredibly slow because of all the hats I had to wear. This help was never received at the level promised despite repeated requests, and that was part of the deal. Some may say "but this is an open-source community". Yes, but there is more to this than most people know, and if someone can't provide something then they shouldn't say it will be provided.


So, at current market value, for the two remaining milestones in my contract, divided by 40 months of labor from 2015 to 2019, at full time, comes out to about ~$6.5 USD per hour of labor (~46*900/6400). Mind you, I had been paid to work on Kovri from the end of 2016-2018 so, let's be more realistic and cut the hours in half: ~$13 (~46*900/3200) per hour. Oh, but wait, what about the end of 2015 through end of 2016? I worked then in parallel on Kovri for free so, let's be even more realistic and cut the outcome back down to: ~$9.7 (46*900/6400*1.5) per hour. Womp womp. I should've worked at McDonald's as a manager if I wanted more money. More benefits too.

So, where does that leave us? First, a few extra tidbits of info for those who wish to read more about character when perusing prose:

People at Defcon 26 approached me, random people that I'd never met in my life nor had spoken with online (that I know of), and they all told me the same thing: they told me I was a "workaholic" and that I "looked miserable".

Sure. Yes. Absolutely. I've proven to have worked a bit too much, and Kovri has been absolutely miserable to work with from the start (I never wanted to fork, voted against it, as I detailed in my links at the top of this post). On the other hand, now, Sekreta has been a completely different experience. More joy, more output, more productivity, less mentoring, less project, less anything that takes me away from positive and productive R&D. More-so, it's an actual solution to Monero's network stack and not some hack, so it's an exciting prospect to work on.

Ideally, I'm paid out in both milestones a.s.a.p and we brush our hands clean of this all so we can move onto a much brighter future. This will be the best outcome because relations will be mended and everyone will be happy (or should be happy, because everyone got way-more than they paid for).

Another possible option

Now, if paying me for my past labor is something that donors don't want to do (I can understand for "technical" reasons), let's consider another option: we can move my remaining funds into a new FFS guaranteeing my continued contributions to Monero Project (VRP manager, VRP marketing and promotion, Monero code development, lots of ways to skin this cat). These contributions will be unrelated to Kovri or Sekreta (or, if related to Sekreta, as a "donor" to Sekreta development). Mind you, moneromooo has already taken upon himself to collaborate on Sekreta on his own volition - even though he is not paid to. How long he does this, I don't know; but I've seen more collaboration from Monero Project in #sekreta/#sekreta-dev than I have seen in Kovri for as long as I can remember; so that's certainly a good sign. As such, I highly encourage donors to move my remaining milestones to Sekreta development.

Note: I must say this though: this payment option, if not related to Sekreta, will be my least desirable option as I will have never been paid for my services rendered, regardless of any written contract or not.

Last resort

Now, the last and most final option will be for me to complete my Kovri proposal as originally stipulated - but this is stupid. Why? Because this solution has been deprecated. You can use Kovri now with Monero's new SOCKS proxy as well as Tor. It's extremely limited in any capacity, as proven by Sekreta, but it's what fluffypony wanted and handed down to his MyMonero minions to implement (see github for proof) in an executive action without any input from anyone competent in internet-anonymity nor from any communication with me or anyone in Kovri. Note: to solve the "but we've been waiting" problem, you need to pay more than one person to do the job, not pay another person to do another job.

So, if you want to waste your time (and my time), we can proceed with this option as originally planned. It won't be a waste of XMR though because I certainly need it.


Regardless of any outcome, the contract will be completed and I will receive my payments (I also have medical bills coming up, so I hope this project doesn't screw me).

Thanks to all for everything good that's happened so far. Certainly there will be more good to come.


drfred edited 7 months ago Replies: 1 | Weight: 54 | Link [ - ]

as one of the biggest ffs donors I'm absolutely against any further payouts to anonimal.

Reply to: drfred
anonimal posted 7 months ago Replies: 1 | Weight: 62 | Link [ - ]

Not only are you not a donor to my FFS (which means your opinion is irrelevant), you are not one of the biggest FFS donors as you claim to be. Also, as I've worked longer and harder on essential Monero development more-so than almost anyone else you've donated to, you're an absolute cheap scab of an idiot for not prioritizing core Monero development over anything else.

Reply to: anonimal drfred
drfred posted 7 months ago Weight: 67 | Link [ - ]

I really don't feel like having a dick measurement contest with you, but if you check the hall of fame you'd realize that I've been part of the monero community way before you even knew about the project. and since you're so tech savy you'll also know that you can use xmr quite privately even without your failed kovri project :D so please tell me again how I'm not a top donor? anyway I guess you're already punished enough with being yourself so I'm out for now. Rest assured I don't have a personal grudge against you, so I'll hope you get well soon and start to discover what it's really like to be participating in a community of grown ups. aloha!

anonimal edited 7 months ago Replies: 1 | Weight: 42 | Link [ - ]

Milestone 15 includes ~123.5 billed hours through 2018-11-15 and 2018-12-25.

Introducing Sekreta.

On the question of whether this Milestone should go towards Sekreta development or not, I implore you to read this first as it covers the question in detail. Propositions are listed at the bottom of that document. Choose wisely. Do know that I'm open to discussion too (always have been).

Note: a small portion of this milestone was spent directly on Kovri core team related but the vast majority was spent on Sekreta. Before 2018-11-15, none of this existed; not even the idea of Sekreta, nor any of the specs, nor any portion of the draft. 'Twas an intense month of R&D and writing.

Edit: correction: I introduced the idea of a protocol called Sekreta a year or two ago but the details were never codified, and it was certainly not what it is now. (Fun note: I originally wanted to call Kovri "Sekreta" but was outvoted, hehe).

Reply to: anonimal
anonimal posted 7 months ago Weight: 42 | Link [ - ]

In an ideal scenario, if all goes well, and I receive assurances that the community won't flake this time; I'll remove the other donation addresses for ZCash and Bitcoin and we can make Sekreta an exclusive Monero thing. If all does not go well, I'll do whatever is needed to satisfy these remaining milestone requirements but I certainly won't be a happy camper - and I'll end up needing to do whatever I need to do in order to survive (also, see the pasted document).

anonimal edited 1 year ago Weight: 0 | Link [ + ]

7th milestone completed


August 6th through September 18th: this milestone covers 146.5 billable hours. Actual time spent was ~310 hours (technically, all billable).

A majority of my time was spent with non-code items. We hope to alleviate that area of workload by having a project management assistant.

Summary of work completed


  • Completed usable local testnet
  • Cross-platform + build development
  • Core/app code + crypto development
  • Docs development
  • See open/merged pulls for details


  • Team Kovri and the FFS grows larger, as does the amount of collaboration between each other across various topics and issues
    • see also #kovri-dev/#kovri/#monero-dev
  • Crypto++ (debugging + fixes, cross-arch collab)
  • Kovri promotion video script
  • report resolution
  • Single-policy VRP rewrite + resolve Monero C4
  • Java I2P (proposals)


  • Umbrella-project development
    • kovri-docs, kovri-site, meta, monero, monero-site, research-lab
    • see open/merged pulls for respective repos
  • Prep for/completing the show (see also the subsequent news article)
  • /r/Kovri, twitter @getkovri, new kovri projects on
  • Provide support, lead meetings, project management, emails, repo management (coverity, etc.), AUR and more

...and more.


I have detailed, down to the second, time-tracking of all my work; complete with detailed descriptions of every activity. Because of privacy concerns, I'm reluctant to ever post this information publicly but will make them available to members of the core team upon request.

For GitHub-recorded details (commits, pull requests, issues, discussions, etc.) see my activity page:

anonimal edited 2 years ago Weight: 0 | Link [ + ]

4th milestone completed


This milestone covers full-time work from March 27th through May 3rd (May 4th if you count the writing of this report).

4th milestone goals

Code. As much as possible.

Flow summary

After an analysis of java I2P's NTCP implementation came 33 bulleted point notes and TODO's regarding regarding both java I2P's and kovri's NTCP implementation.

which then lead to

  • #627 RouterInfo rewrite: fixes/additions/refactoring

which may lead to a

  • NetDb rewrite/refactor

which will lead to an

  • NTCP rewrite/factor

    • which should provide better solutions (either explicit or implicit solutions), for NTCP and #187

which will lead to an

  • Alpha release.

My ideal scenario

Every router issue will be resolved so I can work on Monero integration.


It's quite possible that I would need to devote most milestones to fixing/rewriting all remaining core areas. Regardless if that's necessary, I do intend on fulfilling every goal in this FFS.

Summary of work completed


  • PR's #617, #620-621, #625-#634
  • RouterInfo spec study, rewrite/refactor #627. A work in progress, currently 6 merged PR's = 44 commits
  • Java I2P NTCP implementation study / spec study /
    • As noted above, 33 bulleted point note analysis and TODO's regarding both java I2P's and kovri's NTCP implementation. These are private notes but can be made available upon request
  • Crypto++ master branch review for various submodule bumpings

Build / Packaging


  • PR review + fixes / collaboration with moroccanmalinois, selene, and rakhimov
    • #608 through #616, #622-#623
  • Work with rehrar on logo + website
  • Work with Jeff at crypto++ for cryptopp#398
  • nanoakron discussion about replacing eepsite keys with monero keys
    • related research

Repo / Project

  • H1 correspondence = created, kovri moved to
  • Various monero/meta github issues/PR, monero/kovri issues discussion


  • Create Monero VRP review discussion/workarounds
  • Various monero/meta github issues/PR


  • Mnemonic seed for privkey recovery (#619)

Note: the Alpha release is 99% ready. The remaining 1% requires more work and more hands/eyes are needed (RouterInfo/NetDb/NTCP are core areas and cannot be ignored for this release).

anonimal edited 1 year ago Weight: 0 | Link [ + ]

Milestone 12 includes ~192 billed hours from the dates 06-12-2018 through 06-16-2018, and 06-22-2018 through 07-27-2018. As usual, I've donated many more hours than what I've billed because I'm picky about what I bill.

In addition to new features and fixes ranging from minor to critical, as well as much mentoring for contributors, this milestone includes Kovri's first release! You can find v0.1.0-alpha (currently release candidates) at Arch Linux users can find at release package at All other users can pull from our nightly builds as noted in the README, or clone and checkout the alpha release tag. There are no other official release builds because Monero Project (our sole provider of devops and build machines) has decided to not have any involvement in releasing anything but nightlies. I personally find this unacceptable and am appalled not because of their decision but because there was no warning of their decision. See This issue will need to be resolved by the next release, with or without them.


  • Does not include merge commits of PRs I've reviewed, or PRs of my own (except for tags)
  • Does not include patches I've sent to PRs from others (see github for those)
  • Does include a handful of commits from my fork
  • Sorted newest to oldest


d1e9afab Makefile: fix doxygen target (requires CMake)
a172c47a (tag: v0.1.0-alpha-rc3) Merge pull request #994
79948dba CMake: side-step Clang (CMake?) bug for Release build
ec33da05 CMake: set AppleClang detection and min version
a6faac58 (tag: v0.1.0-alpha-rc2) Merge pull request #992
74f2cf08 Docs: bump kovri-docs to 8768f1de
a77ae03f Kovri: update release version and codename
9dfb2cee Installer: update Windows ReadMe.htm
f05abb9b README: remove "Alpha release coming soon"
034e947d Build: use release/debug defs, add debug target
6f125556 Reseed: update ca-certificates.crt
c6ea7553 Reseed: temporarily remove
57a59b7e Reseed: temporarily remove domain
fcca6392 Reseed: remove domain
d2ad3bdc Kovri: fix log levels, log appropriate asio errors
a383f48e Tests: add RI test cases for transports
9b553ae5 Core: use IPv6 address object when expected
ee6d9d2a Crypto: remove ed25519 assertions
5fcee5f9 Docs: bump kovri-docs to 8e45f23
fa61f0ff Build: remove CMake SUPERCOP option (see #909)
4613d884 (tag: v0.1.0-alpha-rc1) Merge pull request #909
58311032 Tests: update ed25519 unit-test + benchmark
3b39ef3a Crypto: implement TweetNaCl via Crypto++, remove SUPERCOP (ref10)
e2cf677e Build: bump cryptopp to 8d6b1af (NaCl-related API patch)
e237f8e2 Kovri: use const-time comparison in security-critical areas
f4b2e7a6 Crypto: implement constant-time comparator
983b562e SSUPacketParser: ParseFragment: use gcount(), not size()
7180d31f SSUPacketParser: ParseFragment: don't read if purported size is 0
ab3aeaff SSUPacketParser: throw invalid packet size when parsing fragment
35d0561f SSUFragment: use appropriate size type
989ef86a Build: bump cryptopp to f143534
05651651 SSUData: SentMessage RAII refactor
98bb652a SSUFragment: use appropriate size type (uint16_t)
1c31d6d4 SSU: packet accessor/mutator refactor per the style/idiom guide
4ad9568c SSUSession: don't return on invalid session packet length
3c7ce7cb SSUSessionPacket: ensure valid length in ctor
1cfbf0de SSU: refactor SSUSessionPacket
cf1fa502 SSU: packet const/noexcept correctness when possible
8ce3f990 SSU: move packet accessors/mutators into header
36081c21 SSUServer: use exception dispatcher as needed
c59dd205 SSUServer: clang-format check-in for packet handlers
6e2a0414 SSUServer: use smart pointer when handling packets
61ee6128 SSUServer: const/ref correctness for params/returns
7997da5e Transports: zero-initialize peer integrals
db7643e8 SSUServer: zero-initialize peer test creation time
4173f88b SSU: zero-initialize length of raw packet buffer
4a9697a4 Tests: fix X509 symbol conflict with cotire/openssl
e3d8f64c Tests: move build requirements to single header
cbcd136a Build: bump cryptopp to 7eb0535, use branch kovri
a9726b07 Package: update ACL details/features in tunnels.conf
70fc1fad Tests: add parse ACL base32 hash w/domain test-case
a04fda16 Tests: add parse ACL mixed-radix hash test-case
dd1d9670 Tests: add parse ACL base64 hash test-case
49ceec21 Tests: add parse ACL base32 hash test-case
3b0cd4c8 Tests: create parse ACL fixture + refactor case
47105839 Tests: use boost test message when parsing ACL
40d7af20 Tests: fix client ACL parsing copyright date
1764a10f ParseACL: parse base32 domain and base64 encoded hashes
455287b7 Client: create separate b32/b64 dest text files
8f267c6b Filesystem: add default modes for i/o file streams
31b1a867 Filesystem: const openmode for FileStream
a6e0a589 Filesystem: const ref return when ensuring path
a7e08b9d Docs: bump kovri-docs to 6184157
297e67a5 Client: implement HTTP server tunnel X-I2P headers
05cd0357 Tests: add IdentityEx base64 conversion test-case
1af9d594 Tests: add IdentityEx base32 conversion test-case
70333ae1 IdentityEx: add base32-to-buffer conversion
e64d9060 Tests: initialize with raw ident in fixture ctor
4b9ba711 Tests: refactor IdentityEx fixture raw ident
dd362f89 IdentityEx: add buffer-to-base32 conversion
943f4ccc README: set `make release` as recommended default
dfd94716 Build: don't skip rpath for in-tree shared deps
aae581ac CMake: use build RPATH when using Boost.Python
8e506193 Testnet: add default grafana user + grafana to help
237e1f5b RouterInfo: don't throw on invalid RI size
5f7a0353 Tests: add case for setting invalid HTTPResponse code
6505496a Tests: add check for valid HTTPMessage response
4d7218d9 Tests: valid HTTPMessage response namespace cleanup
8783ae2a HTTPResponse: noexcept when returning response
49eb7653 HTTPResponse: assert and throw upon invalid status
4d07cac0 HTTPResponse: appropriate mutator/accessor names
a5f2a1cb HTTPResponse: refactor response setter
f4952ce4 Client: do not fully qualify HTTP error codes
baea32ae HTTPResponse: move definitions into impl file
18b35268 RouterInfo: don't throw when RI fails sig verify
ed041ea6 RouterInfo: remove unnecessary null buffer check
e89e992d RouterInfo: Verify: remove auto for data pointer
580a5b82 Tests: cleanup RI test comments
1cd37978 Tests: NetDb: update parameters when adding RI
f6e401a5 CMake: fix the MinGW-w64 static build
b1a2fcac Kovri: bump I2P router version to 0.9.35
d13064ee Transports: remove NTCP resolver per prop 141
ab04b92e RouterInfo: remove deprecation when parsing host
c05c544f RouterInfo: handle intro expiration, don't save RIs with unknown traits
c175fbff RouterInfo: buffer refactor
695c9117 Tests: create buffer utility class unit-test
5e2897c3 Core: create buffer utility class
c014ea6c MTU: support local MTU size on DragnonFly BSD
e5444322 MTU: update FreeBSD/Win32 preprocessor defines
8e985280 Tests: disable libs' singleton logger
eee030ad CMake: build without RPATH
fe113aae Kovri: don't dispatch error_with_option_name
18e10e32 Transports: remove stop call upon singleton dtor
6a027559 Kovri: implement runtime UPnP

Kovri Docs

36eb0c5 user_guide: update platform binary paths
e00f475 README: remove "Alpha release coming soon"
a5b8660 i18n: update pre-alpha to Alpha
1d3fd20 Acknowledgements: remove ref10 from SUPERCOP
a15c381 i18n: remove build guide from remaining languages
b4bae3b English: add UPnP option, remove build guide link
38f977f i18n: update anonimal twitter handle
273a8e3 Testnet: rewrite custom commands
5612732 Testnet: rewrite step 4 (destroying testnet)
3a7ab43 Testnet: rewrite step 3 (stopping testnet)
d4cd659 Testnet: rewrite step 2 (starting testnet)
9d56752 Testnet: rewrite step 1 (creating testnet)
3f76001 Testnet: cleanup/add prerequisites
60c98ce Testnet: fix unordered sub-list
57a868e Testnet: add preliminary preamble

Kovri Site

81d0226 Deps: bump kovri-docs to 8768f1de
5b79c0e Deps: bump kovri-docs to 385211e
56f4b06 Deps: bump kovri-docs to 8e45f23
b1645dd check.kovri.i2p: strip X-I2P from actual client headers
775b363 check.kovri.i2p: remove unused files
d209ecc check.kovri.i2p: add X-I2P header reporting
7a517db check.kovri.i2p: add browser header php and style
8e3ffbc check.kovri.i2p: add index.php

Kovri AUR

bbf162d v0.1.0-alpha-rc3
ac0da49 PKGBUILD: don't build with clang
de532aa v0.1.0-alpha-rc2

Meta (see also PRs for previous milestones for commits not noted back then)

dc2b463 VRP: apply preamble to kovri beta
378c236 VRP: reiterate that code impl includes master branch

unbound (UNBILLED)

eda9ed35 configure_checks.cmake: update to 1.7.3
e66cc1a8 update to 1.7.3


Kovri (includes patches/fixes I've given while mentoring/reviewing)

Kovri Docs

Kovri Site




Required by the community but UNBILLED


In addition to the usual research and code review required for development (including library research, I2P spec/impl, and proposal review):


VRP related


  • The usual support, collaboration, debunking, mentoring in:
    • #kovri-dev
    • #kovri
    • #monero-community
    • #monero-dev
    • #monero-research-lab
    • #monero-translations
    • #monero-vrp
  • IRC PMs with kovri collaborators regarding kovri and project development
  • Twitter @getkovri

Last but not least

  • Buildbot backend collaboration + maintaining non-buildbot build backend environment
  • Kovri-related emails + email lists for monero/kovri dependencies + security advisories
  • Maintaining Coverity build
  • Write Milestone #12 report


  • Please, feel free to look closely at every noted pull request and issue as much effort goes into Kovri development (also see git-log for details)
  • I have detailed, down to the second, time-tracking of all my work; complete with detailed descriptions of every activity. Because of privacy concerns, I'm reluctant to ever post this information publicly but will make them available to members of the core team upon request
  • For GitHub-recorded details (commits, pull requests, issues, discussions, etc.), see my activity page:
  • Other useful information may also be on twitter:
anonimal posted 9 months ago Weight: 0 | Link [ + ]

Milestone 14 includes ~120 billed hours, sporadically, through the dates 2018-10-01 and 2018-11-15. As usual, I've donated more hours than what I've billed but I've also been occupied with IRL events such as massive back taxes because no one in this community mentioned that XMR is taxed on the time-and-date they are received (not just when they are sold)!!!! I'm not a financial wizard nor a tax attorney so, maybe this info was already common knowledge in the community, I don't know. Regardless, the markets are screwing almost all of us, so I'm sure I'm not the only person getting fucked.

This milestone was a big set-back to immediate code development but a huge leap forward to necessary project development and future code development (FYI, this was brought on by the Monero community). For the majority of my next milestone, I intend to return to the kovri repo to work on code, PRs, and whiteboarding of the various APIs.

Some highlights of this milestone:

  • After a funding meeting with 5 people from the Kovri Project team, we decided to move on creating The Kovri Fund. This repository is a WIP fund that (until it can replaced by decentralized crowdfunding) will act as an escrow'd crowdfunding system where contributors can work on Kovri while having the option of being paid in 5 leading cryptocurrencies (XMR among them) or in fiat (method TBD). This should vastly expand contributor potential for Kovri Project since the software is cryptocurrency-agnostic / application-agnostic.
  • Along with requisite collaboration and negotiations, this milestone also saw the formation of the Kovri Core Team; consisting of myself, Luke, and Sean. We are in the process of securing technology and creating a standardized process to handle multisig wallets for all escrowed cryptocurrencies.

Other highlights:

  • API + code-related research / study
  • Add more subdomains ( + / collab with Luke
  • Gitlab-CI / gitlab runner + Docker / shell executor, research/testing/deployment for Linux
    • Backend development to satisfy new Boost 1.67+ requirements / backend overhaul
  • Frontend updating / maintenance of kovri-site (thanks to Luke's streamlined ssh/shell process)
  • Kovri Core Team collaboration / project planning / funding & cryptocurrency planning
    • Collaboration for storage options / distributed options / multisig options
    • Establishing a protocol by creating templates and HOWTOs (see the kovri-fund repo)
  • Kovri-docs: create/add unit-test writing section to dev guide
  • Meeting scheduler research (so we can automate meetings)
  • Monero "outreach" research as it relates to kovri
  • Monero multisig wallet debugging with moneromooo + rbrunner (, needed resolved so I can work toward kovri integration
  • Monero testnet study for kovri/monero integration testing
  • Project management discussion with Diego, one-on-one collab with Sonia
  • Public relations training for Sonia, between Diego and myself, via a number of conference calls (no one in Monero Outreach would lift a finger for Kovri, so we needed to go our own route).
  • Research/setup new keybase account for kovri keybase team
  • Tor tests/doc review + Tor/Katzenpost research
  • Write Milestone #13 report
  • Write Milestone #14 report
  • distcc setup testing for backend build
  • kovri onion creation collab + tweet onion/garlic sites
  • kovri-slack relay maintenance / backend machine maintenance
    • also research/test Slack meeting apps
  • kovri.i2p backend / collab with Luke
  • njalla maintenance / collab with Luke

Note: nearly all of our collaboration is now done via secure side-channels instead of the public IRC/Slack channels.

Much of my work is now pushed directly to the kovri-project repos instead of pull requested. See commits to kovri-site, kovri-docs, kovri-meta, kovri-fund, and kovri repositories.

In addition to those commits, consider the following:

Required by the community but UNBILLED


fluffypony posted 2 years ago Weight: 0 | Link [ + ]

Donated 200 XMR to this from the general dev donation fund

Shrikez posted 2 years ago Weight: 0 | Link [ + ]

+50, thanks for all past and future work!

ravla posted 2 years ago Weight: 0 | Link [ + ]


nioc edited 2 years ago Weight: 0 | Link [ + ]

contribution sent from one anonimal to another

RaskaRuby posted 2 years ago Weight: 0 | Link [ + ]

Really looking forward to this. +50 XMR

ibuyltc posted 2 years ago Weight: 0 | Link [ + ]


kanaarrt posted 2 years ago Weight: 0 | Link [ + ]

+100 Let's do this!