Dragonchain Great Reddit Scaling Bake-Off Public Proposal
Dragonchain Public Proposal TL;DR:
Dragonchain has demonstrated twice Reddit’s entire total daily volume (votes, comments, and postsper Reddit 2019 Year in Review) in a 24-hour demo on an operational network. Every single transaction on Dragonchain is decentralized immediately through 5 levels of Dragon Net, and then secured with combined proof on Bitcoin, Ethereum, Ethereum Classic, and Binance Chain, via Interchain. At the time, in January 2020, the entire cost of the demo was approximately $25K on a single system (transaction fees locked at $0.0001/txn). With current fees (lowest fee $0.0000025/txn), this would cost as little as $625. Watch Joe walk through the entire proposal and answer questions onYouTube. This proposal is also available on the Dragonchain blog.
Hello Reddit and Ethereum community!
I’m Joe Roets, Founder & CEO of Dragonchain. When the team and I first heard about The Great Reddit Scaling Bake-Off we were intrigued. We believe we have the solutions Reddit seeks for its community points system and we have them at scale. For your consideration, we have submitted our proposal below. The team at Dragonchain and I welcome and look forward to your technical questions, philosophical feedback, and fair criticism, to build a scaling solution for Reddit that will empower its users. Because our architecture is unlike other blockchain platforms out there today, we expect to receive many questions while people try to grasp our project. I will answer all questions here in this thread on Reddit, and I've answered some questions in the stream on YouTube. We have seen good discussions so far in the competition. We hope that Reddit’s scaling solution will emerge from The Great Reddit Scaling Bake-Off and that Reddit will have great success with the implementation.
Dragonchain is a robust open source hybrid blockchain platform that has proven to withstand the passing of time since our inception in 2014. We have continued to evolve to harness the scalability of private nodes, yet take full advantage of the security of public decentralized networks, like Ethereum. We have a live, operational, and fully functional Interchain network integrating Bitcoin, Ethereum, Ethereum Classic, and ~700 independent Dragonchain nodes. Every transaction is secured to Ethereum, Bitcoin, and Ethereum Classic. Transactions are immediately usable on chain, and the first decentralization is seen within 20 seconds on Dragon Net. Security increases further to public networks ETH, BTC, and ETC within 10 minutes to 2 hours. Smart contracts can be written in any executable language, offering full freedom to existing developers. We invite any developer to watch the demo, play with our SDK’s, review open source code, and to help us move forward. Dragonchain specializes in scalable loyalty & rewards solutions and has built a decentralized social network on chain, with very affordable transaction costs. This experience can be combined with the insights Reddit and the Ethereum community have gained in the past couple of months to roll out the solution at a rapid pace.
Response and PoC
In The Great Reddit Scaling Bake-Off post, Reddit has asked for a series of demonstrations, requirements, and other considerations. In this section, we will attempt to answer all of these requests.
A live proof of concept showing hundreds of thousands of transactions
On Jan 7, 2020, Dragonchain hosted a 24-hour live demonstration during which a quarter of a billion (250 million+) transactions executed fully on an operational network. Every single transaction on Dragonchain is decentralized immediately through 5 levels of Dragon Net, and then secured with combined proof on Bitcoin, Ethereum, Ethereum Classic, and Binance Chain, via Interchain. This means that every single transaction is secured by, and traceable to these networks. An attack on this system would require a simultaneous attack on all of the Interchained networks. 24 hours in 4 minutes (YouTube): 24 hours in 4 minutes The demonstration was of a single business system, and any user is able to scale this further, by running multiple systems simultaneously. Our goals for the event were to demonstrate a consistent capacity greater than that of Visa over an extended time period. Tooling to reproduce our demo is available here: https://github.com/dragonchain/spirit-bomb
Source code (for on & off-chain components as well tooling used for the PoC). The source code does not have to be shared publicly, but if Reddit decides to use a particular solution it will need to be shared with Reddit at some point.
Dragonchain’s architecture attacks the scalability issue from multiple angles. Dragonchain is a hybrid blockchain platform, wherein every transaction is protected on a business node to the requirements of that business or purpose. A business node may be held completely private or may be exposed or replicated to any level of exposure desired. Every node has its own blockchain and is independently scalable. Dragonchain established Context Based Verification as its consensus model. Every transaction is immediately usable on a trust basis, and in time is provable to an increasing level of decentralized consensus. A transaction will have a level of decentralization to independently owned and deployed Dragonchain nodes (~700 nodes) within seconds, and full decentralization to BTC and ETH within minutes or hours. Level 5 nodes (Interchain nodes) function to secure all transactions to public or otherwise external chains such as Bitcoin and Ethereum. These nodes scale the system by aggregating multiple blocks into a single Interchain transaction on a cadence. This timing is configurable based upon average fees for each respective chain. For detailed information about Dragonchain’s architecture, and Context Based Verification, please refer to the Dragonchain Architecture Document.
An interesting feature of Dragonchain’s network consensus is its economics and scarcity model. Since Dragon Net nodes (L2-L4) are independent staking nodes, deployment to cloud platforms would allow any of these nodes to scale to take on a large percentage of the verification work. This is great for scalability, but not good for the economy, because there is no scarcity, and pricing would develop a downward spiral and result in fewer verification nodes. For this reason, Dragonchain uses TIME as scarcity. TIME is calculated as the number of Dragons held, multiplied by the number of days held. TIME influences the user’s access to features within the Dragonchain ecosystem. It takes into account both the Dragon balance and length of time each Dragon is held. TIME is staked by users against every verification node and dictates how much of the transaction fees are awarded to each participating node for every block. TIME also dictates the transaction fee itself for the business node. TIME is staked against a business node to set a deterministic transaction fee level (see transaction fee table below in Cost section). This is very interesting in a discussion about scaling because it guarantees independence for business implementation. No matter how much traffic appears on the entire network, a business is guaranteed to not see an increased transaction fee rate.
Dragonchain uses Docker and Kubernetes to allow the use of best practices traditional system scaling. Dragonchain offers managed nodes with an easy to use web based console interface. The user may also deploy a Dragonchain node within their own datacenter or favorite cloud platform. Users have deployed Dragonchain nodes on-prem on Amazon AWS, Google Cloud, MS Azure, and other hosting platforms around the world. Any executable code, anything you can write, can be written into a smart contract. This flexibility is what allows us to say that developers with no blockchain experience can use any code language to access the benefits of blockchain. Customers have used NodeJS, Python, Java, and even BASH shell script to write smart contracts on Dragonchain. With Docker containers, we achieve better separation of concerns, faster deployment, higher reliability, and lower response times. We chose Kubernetes for its self-healing features, ability to run multiple services on one server, and its large and thriving development community. It is resilient, scalable, and automated. OpenFaaS allows us to package smart contracts as Docker images for easy deployment. Contract deployment time is now bounded only by the size of the Docker image being deployed but remains fast even for reasonably large images. We also take advantage of Docker’s flexibility and its ability to support any language that can run on x86 architecture. Any image, public or private, can be run as a smart contract using Dragonchain.
Flexibility in Scaling
Dragonchain’s architecture considers interoperability and integration as key features. From inception, we had a goal to increase adoption via integration with real business use cases and traditional systems. We envision the ability for Reddit, in the future, to be able to integrate alternate content storage platforms or other financial services along with the token.
LBRY - To allow users to deploy content natively to LBRY
MakerDAO to allow users to lend small amounts backed by their Reddit community points.
STORJ/SIA to allow decentralized on chain storage of portions of content. These integrations or any other are relatively easy to integrate on Dragonchain with an Interchain implementation.
Cost estimates (on-chain and off-chain) For the purpose of this proposal, we assume that all transactions are on chain (posts, replies, and votes).
On the Dragonchain network, transaction costs are deterministic/predictable. By staking TIME on the business node (as described above) Reddit can reduce transaction costs to as low as $0.0000025 per transaction. Dragonchain Fees Table
How to run it
Building on Dragonchain is simple and requires no blockchain experience. Spin up a business node (L1) in our managed environment (AWS), run it in your own cloud environment, or on-prem in your own datacenter. Clear documentation will walk you through the steps of spinning up your first Dragonchain Level 1 Business node. Getting started is easy...
Download Dragonchain’s dctl
Input three commands into a terminal
Build an image
More information can be found in our Get started documents.
Dragonchain is an open source hybrid platform. Through Dragon Net, each chain combines the power of a public blockchain (like Ethereum) with the privacy of a private blockchain. Dragonchain organizes its network into five separate levels. A Level 1, or business node, is a totally private blockchain only accessible through the use of public/private keypairs. All business logic, including smart contracts, can be executed on this node directly and added to the chain. After creating a block, the Level 1 business node broadcasts a version stripped of sensitive private data to Dragon Net. Three Level 2 Validating nodes validate the transaction based on guidelines determined from the business. A Level 3 Diversity node checks that the level 2 nodes are from a diverse array of locations. A Level 4 Notary node, hosted by a KYC partner, then signs the validation record received from the Level 3 node. The transaction hash is ledgered to the Level 5 public chain to take advantage of the hash power of massive public networks. Dragon Net can be thought of as a “blockchain of blockchains”, where every level is a complete private blockchain. Because an L1 can send to multiple nodes on a single level, proof of existence is distributed among many places in the network. Eventually, proof of existence reaches level 5 and is published on a public network.
Dragonchain is open source and even though the platform is easy enough for developers to code in any language they are comfortable with, we do not have so large a developer community as Ethereum. We would like to see the Ethereum developer community (and any other communities) become familiar with our SDK’s, our solutions, and our platform, to unlock the full potential of our Ethereum Interchain. Long ago we decided to prioritize both Bitcoin and Ethereum Interchains. We envision an ecosystem that encompasses different projects to give developers the ability to take full advantage of all the opportunities blockchain offers to create decentralized solutions not only for Reddit but for all of our current platforms and systems. We believe that together we will take the adoption of blockchain further. We currently have additional Interchain with Ethereum Classic. We look forward to Interchain with other blockchains in the future. We invite all blockchains projects who believe in decentralization and security to Interchain with Dragonchain.
While we only have 700 nodes compared to 8,000 Ethereum and 10,000 Bitcoin nodes. We harness those 18,000 nodes to scale to extremely high levels of security. See Dragonchain metrics.
Some may consider the centralization of Dragonchain’s business nodes as an issue at first glance, however, the model is by design to protect business data. We do not consider this a drawback as these nodes can make any, none, or all data public. Depending upon the implementation, every subreddit could have control of its own business node, for potential business and enterprise offerings, bringing new alternative revenue streams to Reddit.
Costs and resources
Summary of cost & resource information for both on-chain & off-chain components used in the PoC, as well as cost & resource estimates for further scaling. If your PoC is not on mainnet, make note of any mainnet caveats (such as congestion issues).
Every transaction on the PoC system had a transaction fee of $0.0001 (one-hundredth of a cent USD). At 256MM transactions, the demo cost $25,600. With current operational fees, the same demonstration would cost $640 USD. For the demonstration, to achieve throughput to mimic a worldwide payments network, we modeled several clients in AWS and 4-5 business nodes to handle the traffic. The business nodes were tuned to handle higher throughput by adjusting memory and machine footprint on AWS. This flexibility is valuable to implementing a system such as envisioned by Reddit. Given that Reddit’s daily traffic (posts, replies, and votes) is less than half that of our demo, we would expect that the entire Reddit system could be handled on 2-5 business nodes using right-sized containers on AWS or similar environments. Verification was accomplished on the operational Dragon Net network with over 700 independently owned verification nodes running around the world at no cost to the business other than paid transaction fees.
This PoC should scale to the numbers below with minimal costs (both on & off-chain). There should also be a clear path to supporting hundreds of millions of users. Over a 5 day period, your scaling PoC should be able to handle: *100,000 point claims (minting & distributing points) *25,000 subscriptions *75,000 one-off points burning *100,000 transfers
During Dragonchain’s 24 hour demo, the above required numbers were reached within the first few minutes. Reddit’s total activity is 9000% more than Ethereum’s total transaction level. Even if you do not include votes, it is still 700% more than Ethereum’s current volume. Dragonchain has demonstrated that it can handle 250 million transactions a day, and it’s architecture allows for multiple systems to work at that level simultaneously. In our PoC, we demonstrate double the full capacity of Reddit, and every transaction was proven all the way to Bitcoin and Ethereum. Reddit Scaling on Ethereum
Solutions should not depend on any single third-party provider. We prefer solutions that do not depend on specific entities such as Reddit or another provider, and solutions with no single point of control or failure in off-chain components but recognize there are numerous trade-offs to consider
Dragonchain’s architecture calls for a hybrid approach. Private business nodes hold the sensitive data while the validation and verification of transactions for the business are decentralized within seconds and secured to public blockchains within 10 minutes to 2 hours. Nodes could potentially be controlled by owners of individual subreddits for more organic decentralization.
Billing is currently centralized - there is a path to federation and decentralization of a scaled billing solution.
Operational on-premises capabilities
Operational deployment to any datacenter
Over 700 independent Community Verification Nodes with proof of ownership
Operational Interchain (Interoperable to Bitcoin, Ethereum, and Ethereum Classic, open to more)
Usability Scaling solutions should have a simple end user experience.
Users shouldn't have to maintain any extra state/proofs, regularly monitor activity, keep track of extra keys, or sign anything other than their normal transactions
Dragonchain and its customers have demonstrated extraordinary usability as a feature in many applications, where users do not need to know that the system is backed by a live blockchain. Lyceum is one of these examples, where the progress of academy courses is being tracked, and successful completion of courses is rewarded with certificates on chain. Our @Save_The_Tweet bot is popular on Twitter. When used with one of the following hashtags - #please, #blockchain, #ThankYou, or #eternalize the tweet is saved through Eternal to multiple blockchains. A proof report is available for future reference. Other examples in use are DEN, our decentralized social media platform, and our console, where users can track their node rewards, view their TIME, and operate a business node. Examples:
Transactions complete in a reasonable amount of time (seconds or minutes, not hours or days)
All transactions are immediately usable on chain by the system. A transaction begins the path to decentralization at the conclusion of a 5-second block when it gets distributed across 5 separate community run nodes. Full decentralization occurs within 10 minutes to 2 hours depending on which interchain (Bitcoin, Ethereum, or Ethereum Classic) the transaction hits first. Within approximately 2 hours, the combined hash power of all interchained blockchains secures the transaction.
Free to use for end users (no gas fees, or fixed/minimal fees that Reddit can pay on their behalf)
With transaction pricing as low as $0.0000025 per transaction, it may be considered reasonable for Reddit to cover transaction fees for users. All of Reddit's Transactions on Blockchain (month) Community points can be earned by users and distributed directly to their Reddit account in batch (as per Reddit minting plan), and allow users to withdraw rewards to their Ethereum wallet whenever they wish. Withdrawal fees can be paid by either user or Reddit. This model has been operating inside the Dragonchain system since 2018, and many security and financial compliance features can be optionally added. We feel that this capability greatly enhances user experience because it is seamless to a regular user without cryptocurrency experience, yet flexible to a tech savvy user. With regard to currency or token transactions, these would occur on the Reddit network, verified to BTC and ETH. These transactions would incur the $0.0000025 transaction fee. To estimate this fee we use the monthly active Reddit users statista with a 60% adoption rate and an estimated 10 transactions per month average resulting in an approximate $720 cost across the system. Reddit could feasibly incur all associated internal network charges (mining/minting, transfer, burn) as these are very low and controllable fees. Reddit Internal Token Transaction Fees Reddit Ethereum Token Transaction Fees When we consider further the Ethereum fees that might be incurred, we have a few choices for a solution.
Offload all Ethereum transaction fees (user withdrawals) to interested users as they wish to withdraw tokens for external use or sale.
Cover Ethereum transaction fees by aggregating them on a timed schedule. Users would request withdrawal (from Reddit or individual subreddits), and they would be transacted on the Ethereum network every hour (or some other schedule).
In a combination of the above, customers could cover aggregated fees.
Integrate with alternate Ethereum roll up solutions or other proposals to aggregate minting and distribution transactions onto Ethereum.
Users should be able to view their balances & transactions via a blockchain explorer-style interface
From interfaces for users who have no knowledge of blockchain technology to users who are well versed in blockchain terms such as those present in a typical block explorer, a system powered by Dragonchain has flexibility on how to provide balances and transaction data to users. Transactions can be made viewable in an Eternal Proof Report, which displays raw data along with TIME staking information and traceability all the way to Bitcoin, Ethereum, and every other Interchained network. The report shows fields such as transaction ID, timestamp, block ID, multiple verifications, and Interchain proof. See example here. Node payouts within the Dragonchain console are listed in chronological order and can be further seen in either Dragons or USD. See example here. In our social media platform, Dragon Den, users can see, in real-time, their NRG and MTR balances. See example here. A new influencer app powered by Dragonchain, Raiinmaker, breaks down data into a user friendly interface that shows coin portfolio, redeemed rewards, and social scores per campaign. See example here.
Exiting is fast & simple
Withdrawing funds on Dragonchain’s console requires three clicks, however, withdrawal scenarios with more enhanced security features per Reddit’s discretion are obtainable.
Interoperability Compatibility with third party apps (wallets/contracts/etc) is necessary.
Proven interoperability at scale that surpasses the required specifications. Our entire platform consists of interoperable blockchains connected to each other and traditional systems. APIs are well documented. Third party permissions are possible with a simple smart contract without the end user being aware. No need to learn any specialized proprietary language. Any code base (not subsets) is usable within a Docker container. Interoperable with any blockchain or traditional APIs. We’ve witnessed relatively complex systems built by engineers with no blockchain or cryptocurrency experience. We’ve also demonstrated the creation of smart contracts within minutes built with BASH shell and Node.js. Please see our source code and API documentation.
Scaling solutions should be extensible and allow third parties to build on top of it Open source and extensible APIs should be well documented and stable
Third-party permissionless integrations should be possible & straightforward Smart contracts are Docker based, can be written in any language, use full language (not subsets), and can therefore be integrated with any system including traditional system APIs. Simple is better. Learning an uncommon or proprietary language should not be necessary.
Advanced knowledge of mathematics, cryptography, or L2 scaling should not be required. Compatibility with common utilities & toolchains is expected. Dragonchain business nodes and smart contracts leverage Docker to allow the use of literally any language or executable code. No proprietary language is necessary. We’ve witnessed relatively complex systems built by engineers with no blockchain or cryptocurrency experience. We’ve also demonstrated the creation of smart contracts within minutes built with BASH shell and Node.js.
Bonus Points: Show us how it works. Do you have an idea for a cool new use case for Community Points? Build it!
Community points could be awarded to Reddit users based upon TIME too, whereas the longer someone is part of a subreddit, the more community points someone naturally gained, even if not actively commenting or sharing new posts. A daily login could be required for these community points to be credited. This grants awards to readers too and incentivizes readers to create an account on Reddit if they browse the website often. This concept could also be leveraged to provide some level of reputation based upon duration and consistency of contribution to a community subreddit.
Dragonchain has already built a social media platform that harnesses community involvement. Dragon Den is a decentralized community built on the Dragonchain blockchain platform. Dragon Den is Dragonchain’s answer to fake news, trolling, and censorship. It incentivizes the creation and evaluation of quality content within communities. It could be described as being a shareholder of a subreddit or Reddit in its entirety. The more your subreddit is thriving, the more rewarding it will be. Den is currently in a public beta and in active development, though the real token economy is not live yet. There are different tokens for various purposes. Two tokens are Lair Ownership Rights (LOR) and Lair Ownership Tokens (LOT). LOT is a non-fungible token for ownership of a specific Lair. LOT will only be created and converted from LOR. Energy (NRG) and Matter (MTR) work jointly. Your MTR determines how much NRG you receive in a 24-hour period. Providing quality content, or evaluating content will earn MTR.
Security. Users have full ownership & control of their points.
All community points awarded based upon any type of activity or gift, are secured and provable to all Interchain networks (currently BTC, ETH, ETC). Users are free to spend and withdraw their points as they please, depending on the features Reddit wants to bring into production.
Balances and transactions cannot be forged, manipulated, or blocked by Reddit or anyone else
Users can withdraw their balance to their ERC20 wallet, directly through Reddit. Reddit can cover the fees on their behalf, or the user covers this with a portion of their balance.
Users should own their points and be able to get on-chain ERC20 tokens without permission from anyone else
Through our console users can withdraw their ERC20 rewards. This can be achieved on Reddit too. Here is a walkthrough of our console, though this does not show the quick withdrawal functionality, a user can withdraw at any time. https://www.youtube.com/watch?v=aNlTMxnfVHw
Points should be recoverable to on-chain ERC20 tokens even if all third-parties involved go offline
If necessary, signed transactions from the Reddit system (e.g. Reddit + Subreddit) can be sent to the Ethereum smart contract for minting.
A public, third-party review attesting to the soundness of the design should be available
To our knowledge, at least two large corporations, including a top 3 accounting firm, have conducted positive reviews. These reviews have never been made public, as Dragonchain did not pay or contract for these studies to be released.
Bonus points Public, third-party implementation review available or in progress
Compatibility with HSMs & hardware wallets
For the purpose of this proposal, all tokenization would be on the Ethereum network using standard token contracts and as such, would be able to leverage all hardware wallet and Ethereum ecosystem services.
Minting/distributing tokens is not performed by Reddit directly
This operation can be automated by smart contract on Ethereum. Subreddits can if desired have a role to play.
One off point burning, as well as recurring, non-interactive point burning (for subreddit memberships) should be possible and scalable
This is possible and scalable with interaction between Dragonchain Reddit system and Ethereum token contract(s).
Fully open-source solutions are strongly preferred
Dragonchain is fully open source (see section on Disney release after conclusion).
Whether it is today, or in the future, we would like to work together to bring secure flexibility to the highest standards. It is our hope to be considered by Ethereum, Reddit, and other integrative solutions so we may further discuss the possibilities of implementation. In our public demonstration, 256 million transactions were handled in our operational network on chain in 24 hours, for the low cost of $25K, which if run today would cost $625. Dragonchain’s interoperable foundation provides the atmosphere necessary to implement a frictionless community points system. Thank you for your consideration of our proposal. We look forward to working with the community to make something great!
Disney Releases Blockchain Platform as Open Source
The team at Disney created the Disney Private Blockchain Platform. The system was a hybrid interoperable blockchain platform for ledgering and smart contract development geared toward solving problems with blockchain adoption and usability. All objective evaluation would consider the team’s output a success. We released a list of use cases that we explored in some capacity at Disney, and our input on blockchain standardization as part of our participation in the W3C Blockchain Community Group. https://lists.w3.org/Archives/Public/public-blockchain/2016May/0052.html
In 2016, Roets proposed to release the platform as open source to spread the technology outside of Disney, as others within the W3C group were interested in the solutions that had been created inside of Disney. Following a long process, step by step, the team met requirements for release. Among the requirements, the team had to:
Obtain VP support and approval for the release
Verify ownership of the software to be released
Verify that no proprietary content would be released
Convince the organization that there was a value to the open source community
Convince the organization that there was a value to Disney
Offer the plan for ongoing maintenance of the project outside of Disney
Itemize competing projects
Verify no conflict of interest
Change the project name to not use the name Disney, any Disney character, or any other associated IP - proposed Dragonchain - approved
Obtain legal approval
Approval from corporate, parks, and other business units
Approval from multiple Disney patent groups Copyright holder defined by Disney (Disney Connected and Advanced Technologies)
Trademark searches conducted for the selected name Dragonchain
Obtain IT security approval
Manual review of OSS components conducted
OWASP Dependency and Vulnerability Check Conducted
Obtain technical (software) approval
Offer management, process, and financial plans for the maintenance of the project.
Meet list of items to be addressed before release
Remove all Disney project references and scripts
Create a public distribution list for email communications
Remove Roets’ direct and internal contact information
Create public Slack channel and move from Disney slack channels
Create proper labels for issue tracking
Rename internal private Github repository
Add informative description to Github page
Expand README.md with more specific information
Add information beyond current “Blockchains are Magic”
Add getting started sections and info on cloning/forking the project
Add installation details
Add uninstall process
Add unit, functional, and integration test information
Detail how to contribute and get involved
Describe the git workflow that the project will use
Move to public, non-Disney git repository (Github or Bitbucket)
Obtain Disney Open Source Committee approval for release
On top of meeting the above criteria, as part of the process, the maintainer of the project had to receive the codebase on their own personal email and create accounts for maintenance (e.g. Github) with non-Disney accounts. Given the fact that the project spanned multiple business units, Roets was individually responsible for its ongoing maintenance. Because of this, he proposed in the open source application to create a non-profit organization to hold the IP and maintain the project. This was approved by Disney. The Disney Open Source Committee approved the application known as OSSRELEASE-10, and the code was released on October 2, 2016. Disney decided to not issue a press release. Original OSSRELASE-10 document
Why Osana takes so long? (Programmer's point of view on current situation)
I decided to write a comment about «Why Osana takes so long?» somewhere and what can be done to shorten this time. It turned into a long essay. Here's TL;DR of it:
The cost of never paying down this technical debt is clear; eventually the cost to deliver functionality will become so slow that it is easy for a well-designed competitive software product to overtake the badly-designed software in terms of features. In my experience, badly designed software can also lead to a more stressed engineering workforce, in turn leading higher staff churn (which in turn affects costs and productivity when delivering features). Additionally, due to the complexity in a given codebase, the ability to accurately estimate work will also disappear. Junade Ali, Mastering PHP Design Patterns (2016)
Longer version: I am not sure if people here wanted an explanation from a real developer who works with C and with relatively large projects, but I am going to do it nonetheless. I am not much interested in Yandere Simulator nor in this genre in general, but this particular development has a lot to learn from for any fellow programmers and software engineers to ensure that they'll never end up in Alex's situation, especially considering that he is definitely not the first one to got himself knee-deep in the development hell (do you remember Star Citizen?) and he is definitely not the last one. On the one hand, people see that Alex works incredibly slowly, equivalent of, like, one hour per day, comparing it with, say, Papers, Please, the game that was developed in nine months from start to finish by one guy. On the other hand, Alex himself most likely thinks that he works until complete exhaustion each day. In fact, I highly suspect that both those sentences are correct! Because of the mistakes made during early development stages, which are highly unlikely to be fixed due to the pressure put on the developer right now and due to his overall approach to coding, cost to add any relatively large feature (e.g. Osana) can be pretty much comparable to the cost of creating a fan game from start to finish. Trust me, I've seen his leaked source code (don't tell anybody about that) and I know what I am talking about. The largest problem in Yandere Simulator right now is its super slow development. So, without further ado, let's talk about how «implementing the low hanging fruit» crippled the development and, more importantly, what would have been an ideal course of action from my point of view to get out. I'll try to explain things in the easiest terms possible.
else if's and lack any sort of refactoring in general
Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away. Antoine de Saint-Exupéry
This is why refactoring — activity of rewriting your old code so it does the same thing, but does it quicker, in a more generic way, in less lines or simpler — is so powerful. In my experience, you can only keep one module/class/whatever in your brain if it does not exceed ~1000 lines, maybe ~1500. Splitting 17000-line-long class into smaller classes probably won't improve performance at all, but it will make working with parts of this class way easier. Is it too late now to start refactoring? Of course NO: better late than never.
If you think that you wrote this code, so you'll always easily remember it, I have some bad news for you: you won't. In my experience, one week and that's it. That's why comments are so crucial. It is not necessary to put a ton of comments everywhere, but just a general idea will help you out in the future. Even if you think that It Just Works™ and you'll never ever need to fix it. Time spent to write and debug one line of code almost always exceeds time to write one comment in large-scale projects. Moreover, the best code is the code that is self-evident. In the example above, what the hell does (float) 6 mean? Why not wrap it around into the constant with a good, self-descriptive name? Again, it won't affect performance, since C# compiler is smart enough to silently remove this constant from the real code and place its value into the method invocation directly. Such constants are here for you. I rewrote my code above a little bit to illustrate this. With those comments, you don't have to remember your code at all, since its functionality is outlined in two tiny lines of comments above it. Moreover, even a person with zero knowledge in programming will figure out the purpose of this code. It took me less than half a minute to write those comments, but it'll probably save me quite a lot of time of figuring out «what was I thinking back then» one day. Is it too late now to start adding comments? Again, of course NO. Don't be lazy and redirect all your typing from «debunk» page (which pretty much does the opposite of debunking, but who am I to judge you here?) into some useful comments.
This is often neglected, but consider the following. You wrote some code, you ran your game, you saw a new bug. Was it introduced right now? Is it a problem in your older code which has shown up just because you have never actually used it until now? Where should you search for it? You have no idea, and you have one painful debugging session ahead. Just imagine how easier it would be if you've had some routines which automatically execute after each build and check that environment is still sane and nothing broke on a fundamental level. This is called unit testing, and yes, unit tests won't be able to catch all your bugs, but even getting 20% of bugs identified at the earlier stage is a huge boon to development speed. Is it too late now to start adding unit tests? Kinda YES and NO at the same time. Unit testing works best if it covers the majority of project's code. On the other side, a journey of a thousand miles begins with a single step. If you decide to start refactoring your code, writing a unit test before refactoring will help you to prove to yourself that you have not broken anything without the need of running the game at all.
This is basically pretty self-explanatory. You set this thing once, you forget about it. Static code analyzer is another «free estate» to speed up the development process by finding tiny little errors, mostly silly typos (do you think that you are good enough in finding them? Well, good luck catching x << 4; in place of x <<= 4; buried deep in C code by eye!). Again, this is not a silver bullet, it is another tool which will help you out with debugging a little bit along with the debugger, unit tests and other things. You need every little bit of help here. Is it too late now to hook up static code analyzer? Obviously NO.
Say, you want to build Osana, but then you decided to implement some feature, e.g. Snap Mode. By doing this you have maybe made your game a little bit better, but what you have just essentially done is complicated your life, because now you should also write Osana code for Snap Mode. The way game architecture is done right now, easter eggs code is deeply interleaved with game logic, which leads to code «spaghettifying», which in turn slows down the addition of new features, because one has to consider how this feature would work alongside each and every old feature and easter egg. Even if it is just gazing over one line per easter egg, it adds up to the mess, slowly but surely. A lot of people mention that developer should have been doing it in object-oritented way. However, there is no silver bullet in programming. It does not matter that much if you are doing it object-oriented way or usual procedural way; you can theoretically write, say, AI routines on functional (e.g. LISP)) or even logical language if you are brave enough (e.g. Prolog). You can even invent your own tiny programming language! The only thing that matters is code quality and avoiding the so-called shotgun surgery situation, which plagues Yandere Simulator from top to bottom right now. Is there a way of adding a new feature without interfering with your older code (e.g. by creating a child class which will encapsulate all the things you need, for example)? Go for it, this feature is basically «free» for you. Otherwise you'd better think twice before doing this, because you are going into the «technical debt» territory, borrowing your time from the future by saying «I'll maybe optimize it later» and «a thousand more lines probably won't slow me down in the future that much, right?». Technical debt will incur interest on its own that you'll have to pay. Basically, the entire situation around Osana right now is just a huge tale about how just «interest» incurred by technical debt can control the entire project, like the tail wiggling the dog. I won't elaborate here further, since it'll take me an even larger post to fully describe what's wrong about Yandere Simulator's code architecture. Is it too late to rebuild code architecture? Sadly, YES, although it should be possible to split Student class into descendants by using hooks for individual students. However, code architecture can be improved by a vast margin if you start removing easter eggs and features like Snap Mode that currently bloat Yandere Simulator. I know it is going to be painful, but it is the only way to improve code quality here and now. This will simplify the code, and this will make it easier for you to add the «real» features, like Osana or whatever you'd like to accomplish. If you'll ever want them back, you can track them down in Git history and re-implement them one by one, hopefully without performing the shotgun surgery this time.
Again, I won't be talking about the performance, since you can debug your game on 20 FPS as well as on 60 FPS, but this is a very different story. Yandere Simulator is huge. Once you fixed a bug, you want to test it, right? And your workflow right now probably looks like this:
Fix the code (unavoidable time loss)
Rebuild the project (can take a loooong time)
Load your game (can take a loooong time)
Test it (unavoidable time loss, unless another bug has popped up via unit testing, code analyzer etc.)
And you can fix it. For instance, I know that Yandere Simulator makes all the students' photos during loading. Why should that be done there? Why not either move it to project building stage by adding build hook so Unity does that for you during full project rebuild, or, even better, why not disable it completely or replace with «PLACEHOLDER» text for debug builds? Each second spent watching the loading screen will be rightfully interpreted as «son is not coding» by the community. Is it too late to reduce loading times? Hell NO.
Or any other continuous integration tool. «Rebuild a project» can take a long time too, and what can we do about that? Let me give you an idea. Buy a new PC. Get a 32-core Threadripper, 32 GB of fastest RAM you can afford and a cool motherboard which would support all of that (of course, Ryzen/i5/Celeron/i386/Raspberry Pi is fine too, but the faster, the better). The rest is not necessary, e.g. a barely functional second hand video card burned out by bitcoin mining is fine. You set up another PC in your room. You connect it to your network. You set up ramdisk to speed things up even more. You properly set up Jenkins) on this PC. From now on, Jenkins cares about the rest: tracking your Git repository, (re)building process, large and time-consuming unit tests, invoking static code analyzer, profiling, generating reports and whatever else you can and want to hook up. More importantly, you can fix another bug while Jenkins is rebuilding the project for the previous one et cetera. In general, continuous integration is a great technology to quickly track down errors that were introduced in previous versions, attempting to avoid those kinds of bug hunting sessions. I am highly unsure if continuous integration is needed for 10000-20000 source lines long projects, but things can be different as soon as we step into the 100k+ territory, and Yandere Simulator by now has approximately 150k+ source lines of code. I think that probably continuous integration might be well worth it for Yandere Simulator. Is it too late to add continuous integration?NO, albeit it is going to take some time and skills to set up.
Stop caring about the criticism
Stop comparing Alex to Scott Cawton. IMO Alex is very similar to the person known as SgtMarkIV, the developer of Brutal Doom, who is also a notorious edgelord who, for example, also once told somebody to kill himself, just like… However, being a horrible person, SgtMarkIV does his job. He simply does not care much about public opinion. That's the difference.
This is a follow-up on https://old.reddit.com/Bitcoin/comments/hqzp14/technical_the_path_to_taproot_activation/ Taproot! Everybody wants it!! But... you might ask yourself: sure, everybody else wants it, but why would I, sovereign Bitcoin HODLer, want it? Surely I can be better than everybody else because I swapped XXX fiat for Bitcoin unlike all those nocoiners? And it is important for you to know the reasons why you, o sovereign Bitcoiner, would want Taproot activated. After all, your nodes (or the nodes your wallets use, which if you are SPV, you hopefully can pester to your wallet vendoimplementor about) need to be upgraded in order for Taproot activation to actually succeed instead of becoming a hot sticky mess. First, let's consider some principles of Bitcoin.
You the HODLer should be the one who controls where your money goes. Your keys, your coins.
You the HODLer should be able to coordinate and make contracts with other people regarding your funds.
You the HODLer should be able to do the above without anyone watching over your shoulder and judging you.
I'm sure most of us here would agree that the above are very important principles of Bitcoin and that these are principles we would not be willing to remove. If anything, we would want those principles strengthened (especially the last one, financial privacy, which current Bitcoin is only sporadically strong with: you can get privacy, it just requires effort to do so). So, how does Taproot affect those principles?
Taproot and Your /Coins
Most HODLers probably HODL their coins in singlesig addresses. Sadly, switching to Taproot would do very little for you (it gives a mild discount at spend time, at the cost of a mild increase in fee at receive time (paid by whoever sends to you, so if it's a self-send from a P2PKH or bech32 address, you pay for this); mostly a wash). (technical details: a Taproot output is 1 version byte + 32 byte public key, while a P2WPKH (bech32 singlesig) output is 1 version byte + 20 byte public key hash, so the Taproot output spends 12 bytes more; spending from a P2WPKH requires revealing a 32-byte public key later, which is not needed with Taproot, and Taproot signatures are about 9 bytes smaller than P2WPKH signatures, but the 32 bytes plus 9 bytes is divided by 4 because of the witness discount, so it saves about 11 bytes; mostly a wash, it increases blockweight by about 1 virtual byte, 4 weight for each Taproot-output-input, compared to P2WPKH-output-input). However, as your HODLings grow in value, you might start wondering if multisignature k-of-n setups might be better for the security of your savings. And it is in multisignature that Taproot starts to give benefits! Taproot switches to using Schnorr signing scheme. Schnorr makes key aggregation -- constructing a single public key from multiple public keys -- almost as trivial as adding numbers together. "Almost" because it involves some fairly advanced math instead of simple boring number adding, but hey when was the last time you added up your grocery list prices by hand huh? With current P2SH and P2WSH multisignature schemes, if you have a 2-of-3 setup, then to spend, you need to provide two different signatures from two different public keys. With Taproot, you can create, using special moon math, a single public key that represents your 2-of-3 setup. Then you just put two of your devices together, have them communicate to each other (this can be done airgapped, in theory, by sending QR codes: the software to do this is not even being built yet, but that's because Taproot hasn't activated yet!), and they will make a single signature to authorize any spend from your 2-of-3 address. That's 73 witness bytes -- 18.25 virtual bytes -- of signatures you save! And if you decide that your current setup with 1-of-1 P2PKH / P2WPKH addresses is just fine as-is: well, that's the whole point of a softfork: backwards-compatibility; you can receive from Taproot users just fine, and once your wallet is updated for Taproot-sending support, you can send to Taproot users just fine as well! (P2WPKH and P2WSH -- SegWit v0 -- addresses start with bc1q; Taproot -- SegWit v1 --- addresses start with bc1p, in case you wanted to know the difference; in bech32 q is 0, p is 1) Now how about HODLers who keep all, or some, of their coins on custodial services? Well, any custodial service worth its salt would be doing at least 2-of-3, or probably something even bigger, like 11-of-15. So your custodial service, if it switched to using Taproot internally, could save a lot more (imagine an 11-of-15 getting reduced from 11 signatures to just 1!), which --- we can only hope! --- should translate to lower fees and better customer service from your custodial service! So I think we can say, very accurately, that the Bitcoin principle --- that YOU are in control of your money --- can only be helped by Taproot (if you are doing multisignature), and, because P2PKH and P2WPKH remain validly-usable addresses in a Taproot future, will not be harmed by Taproot. Its benefit to this principle might be small (it mostly only benefits multisignature users) but since it has no drawbacks with this (i.e. singlesig users can continue to use P2WPKH and P2PKH still) this is still a nice, tidy win! (even singlesig users get a minor benefit, in that multisig users will now reduce their blockchain space footprint, so that fees can be kept low for everybody; so for example even if you have your single set of private keys engraved on titanium plates sealed in an airtight box stored in a safe buried in a desert protected by angry nomads riding giant sandworms because you're the frickin' Kwisatz Haderach, you still gain some benefit from Taproot) And here's the important part: if P2PKH/P2WPKH is working perfectly fine with you and you decide to never use Taproot yourself, Taproot will not affect you detrimentally. First do no harm!
Taproot and Your Contracts
No one is an island, no one lives alone. Give and you shall receive. You know: by trading with other people, you can gain expertise in some obscure little necessity of the world (and greatly increase your productivity in that little field), and then trade the products of your expertise for necessities other people have created, all of you thereby gaining gains from trade. So, contracts, which are basically enforceable agreements that facilitate trading with people who you do not personally know and therefore might not trust. Let's start with a simple example. You want to buy some gewgaws from somebody. But you don't know them personally. The seller wants the money, you want their gewgaws, but because of the lack of trust (you don't know them!! what if they're scammers??) neither of you can benefit from gains from trade. However, suppose both of you know of some entity that both of you trust. That entity can act as a trusted escrow. The entity provides you security: this enables the trade, allowing both of you to get gains from trade. In Bitcoin-land, this can be implemented as a 2-of-3 multisignature. The three signatories in the multisgnature would be you, the gewgaw seller, and the escrow. You put the payment for the gewgaws into this 2-of-3 multisignature address. Now, suppose it turns out neither of you are scammers (whaaaat!). You receive the gewgaws just fine and you're willing to pay up for them. Then you and the gewgaw seller just sign a transaction --- you and the gewgaw seller are 2, sufficient to trigger the 2-of-3 --- that spends from the 2-of-3 address to a singlesig the gewgaw seller wants (or whatever address the gewgaw seller wants). But suppose some problem arises. The seller gave you gawgews instead of gewgaws. Or you decided to keep the gewgaws but not sign the transaction to release the funds to the seller. In either case, the escrow is notified, and if it can sign with you to refund the funds back to you (if the seller was a scammer) or it can sign with the seller to forward the funds to the seller (if you were a scammer). Taproot helps with this: like mentioned above, it allows multisignature setups to produce only one signature, reducing blockchain space usage, and thus making contracts --- which require multiple people, by definition, you don't make contracts with yourself --- is made cheaper (which we hope enables more of these setups to happen for more gains from trade for everyone, also, moon and lambos). (technology-wise, it's easier to make an n-of-n than a k-of-n, making a k-of-n would require a complex setup involving a long ritual with many communication rounds between the n participants, but an n-of-n can be done trivially with some moon math. You can, however, make what is effectively a 2-of-3 by using a three-branch SCRIPT: either 2-of-2 of you and seller, OR 2-of-2 of you and escrow, OR 2-of-2 of escrow and seller. Fortunately, Taproot adds a facility to embed a SCRIPT inside a public key, so you can have a 2-of-2 Taprooted address (between you and seller) with a SCRIPT branch that can instead be spent with 2-of-2 (you + escrow) OR 2-of-2 (seller + escrow), which implements the three-branched SCRIPT above. If neither of you are scammers (hopefully the common case) then you both sign using your keys and never have to contact the escrow, since you are just using the escrow public key without coordinating with them (because n-of-n is trivial but k-of-n requires setup with communication rounds), so in the "best case" where both of you are honest traders, you also get a privacy boost, in that the escrow never learns you have been trading on gewgaws, I mean ewww, gawgews are much better than gewgaws and therefore I now judge you for being a gewgaw enthusiast, you filthy gewgawer).
Taproot and Your Contracts, Part 2: Cryptographic Boogaloo
Now suppose you want to buy some data instead of things. For example, maybe you have some closed-source software in trial mode installed, and want to pay the developer for the full version. You want to pay for an activation code. This can be done, today, by using an HTLC. The developer tells you the hash of the activation code. You pay to an HTLC, paying out to the developer if it reveals the preimage (the activation code), or refunding the money back to you after a pre-agreed timeout. If the developer claims the funds, it has to reveal the preimage, which is the activation code, and you can now activate your software. If the developer does not claim the funds by the timeout, you get refunded. And you can do that, with HTLCs, today. Of course, HTLCs do have problems:
Privacy. Everyone scraping the Bitcoin blockchain can see any HTLCs, and preimages used to claim them.
This can be mitigated by using offchain techniques so HTLCs are never published onchain in the happy case. Lightning would probably in practice be the easiest way to do this offchain. Of course, there are practical limits to what you can pay on Lightning. If you are buying something expensive, then Lightning might not be practical. For example, the "software" you are activating is really the firmware of a car, and what you are buying is not the software really but the car itself (with the activation of the car firmware being equivalent to getting the car keys).
Even offchain techniques need an onchain escape hatch in case of unresponsiveness! This means that, if something bad happens during payment, the HTLC might end up being published onchain anyway, revealing the fact that some special contract occurred.
And an HTLC that is claimed with a preimage onchain will also publicly reveal the preimage onchain. If that preimage is really the activation key of a software than it can now be pirated. If that preimage is really the activation key for your newly-bought cryptographic car --- well, not your keys, not your car!
Trust requirement. You are trusting the developer that it gives you the hash of an actual valid activation key, without any way to validate that the activation key hidden by the hash is actually valid.
Fortunately, with Schnorr (which is enabled by Taproot), we can now use the Scriptless Script constuction by Andrew Poelstra. This Scriptless Script allows a new construction, the PTLC or Pointlocked Timelocked Contract. Instead of hashes and preimages, just replace "hash" with "point" and "preimage" with "scalar". Or as you might know them: "point" is really "public key" and "scalar" is really a "private key". What a PTLC does is that, given a particular public key, the pointlocked branch can be spent only if the spender reveals the private key of the given public key to you. Another nice thing with PTLCs is that they are deniable. What appears onchain is just a single 2-of-2 signature between you and the developemanufacturer. It's like a magic trick. This signature has no special watermarks, it's a perfectly normal signature (the pledge). However, from this signature, plus some datta given to you by the developemanufacturer (known as the adaptor signature) you can derive the private key of a particular public key you both agree on (the turn). Anyone scraping the blockchain will just see signatures that look just like every other signature, and as long as nobody manages to hack you and get a copy of the adaptor signature or the private key, they cannot get the private key behind the public key (point) that the pointlocked branch needs (the prestige). (Just to be clear, the public key you are getting the private key from, is distinct from the public key that the developemanufacturer will use for its funds. The activation key is different from the developer's onchain Bitcoin key, and it is the activation key whose private key you will be learning, not the developer's/manufacturer's onchain Bitcoin key). So:
Privacy: PTLCs are private even if done onchain. Nobody else can learn what the private key behind the public key is, except you who knows the adaptor signature that when combined with the complete onchain signature lets you know what the private key of the activation key is. Somebody scraping the blockchain will not learn the same information even if all PTLCs are done onchain!
Lightning is still useful for reducing onchain use, and will also get PTLCs soon after Taproot is activated, but even if something bad happens and a PTLC has to go onchain, it doesn't reveal anything!
Trust issues can be proven more easily with a public-private keypair than with a hash-preimage pair.
For example, the developer of the software you are buying could provide a signature signing a message saying "unlock access to the full version for 1 day". You can check if feeding this message and signature to the program will indeed unlock full-version access for 1 day. Then you can check if the signature is valid for the purported pubkey whose private key you will pay for. If so, you can now believe that getting the private key (by paying for it in a PTLC) would let you generate any number of "unlock access to the full version for 1 day" message+signatures, which is equivalent to getting full access to the software indefinitely.
For the car, the manufacturer can show that signing a message "start the engine" and feeding the signature to the car's fimrware will indeed start the engine, and maybe even let you have a small test drive. You can then check if the signature is valid for the purported pubkey whose privkey you will pay for. If so, you can now believe that gaining knowledge of the privkey will let you start the car engine at any time you want.
(pedantry: the signatures need to be unique else they could be replayed, this can be done with a challenge-response sequence for the car, where the car gathers entropy somehow (it's a car, it probably has a bunch of sensors nowadays so it can get entropy for free) and uses the gathered entropy to challenge you to sign a random number and only start if you are able to sign the random number; for the software, it could record previous signatures somewhere in the developer's cloud server and refuse to run if you try to replay a previously-seen signature.)
Taproot lets PTLCs exist onchain because they enable Schnorr, which is a requirement of PTLCs / Scriptless Script. (technology-wise, take note that Scriptless Script works only for the "pointlocked" branch of the contract; you need normal Script, or a pre-signed nLockTimed transaction, for the "timelocked" branch. Since Taproot can embed a script, you can have the Taproot pubkey be a 2-of-2 to implement the Scriptless Script "pointlocked" branch, then have a hidden script that lets you recover the funds with an OP_CHECKLOCKTIMEVERIFY after the timeout if the seller does not claim the funds.)
Now if you were really paying attention, you might have noticed this parenthetical:
(technical details: a Taproot output is 1 version byte + 32 byte public key, while a P2WPKH (bech32 singlesig) output is 1 version byte + 20 byte public key hash...)
So wait, Taproot uses raw 32-byte public keys, and not public key hashes? Isn't that more quantum-vulnerable?? Well, in theory yes. In practice, they probably are not. It's not that hashes can be broken by quantum computes --- they're still not. Instead, you have to look at how you spend from a P2WPKH/P2PKH pay-to-public-key-hash. When you spend from a P2PKH / P2WPKH, you have to reveal the public key. Then Bitcoin hashes it and checks if this matches with the public-key-hash, and only then actually validates the signature for that public key. So an unconfirmed transaction, floating in the mempools of nodes globally, will show, in plain sight for everyone to see, your public key. (public keys should be public, that's why they're called public keys, LOL) And if quantum computers are fast enough to be of concern, then they are probably fast enough that, in the several minutes to several hours from broadcast to confirmation, they have already cracked the public key that is openly broadcast with your transaction. The owner of the quantum computer can now replace your unconfirmed transaction with one that pays the funds to itself. Even if you did not opt-in RBF, miners are still incentivized to support RBF on RBF-disabled transactions. So the extra hash is not as significant a protection against quantum computers as you might think. Instead, the extra hash-and-compare needed is just extra validation effort. Further, if you have ever, in the past, spent from the address, then there exists already a transaction indelibly stored on the blockchain, openly displaying the public key from which quantum computers can derive the private key. So those are still vulnerable to quantum computers. For the most part, the cryptographers behind Taproot (and Bitcoin Core) are of the opinion that quantum computers capable of cracking Bitcoin pubkeys are unlikely to appear within a decade or two.
Current quantum computers can barely crack prime factorization problem for primes of 5 bits.
The 256-bit elliptic curve use by Bitcoin is, by my (possibly wrong) understanding, equivalent to 4096-bit primes, so you can see a pretty big gap between now (5 bit primes) and what is needed (4096 bit primes).
A lot of financial non-Bitcoin systems use the equivalent of 3072-bit primes or less, and are probably easier targets to crack than the equivalent-to-4096-bit-primes Bitcoin.
Quantum computers capable of cracking Bitcoin are still far off.
Pay-to-public-key-hash is not as protective as you might think.
We will probably see banks get cracked before Bitcoin, so the banking system is a useful canary-in-a-coal-mine to see whether we should panic about being quantum vulnerable.
For now, the homomorphic and linear properties of elliptic curve cryptography provide a lot of benefits --- particularly the linearity property is what enables Scriptless Script and simple multisignature (i.e. multisignatures that are just 1 signature onchain). So it might be a good idea to take advantage of them now while we are still fairly safe against quantum computers. It seems likely that quantum-safe signature schemes are nonlinear (thus losing these advantages).
If you are a singlesig HODL-only Bitcoin user, Taproot will not affect you positively or negatively. Importantly: Taproot does no harm!
If you use or intend to use multisig, Taproot will be a positive for you.
If you transact onchain regularly using typical P2PKH/P2WPKH addresses, you get a minor reduction in feerates since multisig users will likely switch to Taproot to get smaller tx sizes, freeing up blockspace for yours.
If you are using multiparticipant setups for special systems of trade, Taproot will be a positive for you.
Remember: Lightning channels are multipartiicpiant setups for special systems of lightning-fast offchain trades!
I Wanna Be The Taprooter!
So, do you want to help activate Taproot? Here's what you, mister sovereign Bitcoin HODLer, can do!
If you have developer experience especially in C, C++, or related languages
Review the Taproot code! There is one pull request in Bitcoin Core, and one in libsecp256k1. I deliberately am not putting links here, to avoid brigades of nontechnical but enthusiastic people leaving pointless reviews, but if you are qualified you know how to find them!
But I am not a cryptographeBitcoin Core contributomathematician/someone as awesome as Pieter Wuille
That's perfectly fine! The cryptographers have been over the code already and agree the math is right and the implementation is right. What is wanted is the dreary dreary dreary software engineering: are the comments comprehensive and understandable? no misspellings in the comments? variable names understandable? reasonable function naming convention? misleading coding style? off-by-one errors in loops? conditions not covered by tests? accidental mixups of variables with the same types? missing frees? read-before-init? better test coverage of suspicious-looking code? missing or mismatching header guards? portability issues? consistent coding style? you know, stuff any coder with a few years of experience in coding anything might be able to catch. With enough eyes all bugs are shallow!
If you are running a mining pool/mining operation/exchange/custodial service/SPV server
Be prepared to upgrade!
One of the typical issues with upgrading software is that subtle incompatibilities with your current custom programs tend to arise, disrupting operations and potentially losing income due to downtime. If so, consider moving to the two-node setup suggested by gmax, which is in the last section of my previous post. With this, you have an up-to-date "public" node and a fixed-version "private" node, with the public node protecting the private node from any invalid chainsplits or invalid transactions. Moving to this setup from a typical one-node setup should be smooth and should not disrupt operations (too much).
If you are running your own fullnode for fun or for your own wallet
Be prepared to upgrade! The more nodes validating the new rules (even if you are a non-mining node!), the safer every softfork will be!
If you are using an SPV wallet or custodial wallet/service (including hardware wallets using the software of the wallet provider)
Contact your wallet provider / SPV server and ask for a statement on whether they support Taproot, and whether they are prepared to upgrade for Taproot! Make it known to them that Taproot is something you want!
But I Hate Taproot!!
Raise your objections to Taproot now, or forever hold your peace! Maybe you can raise them here and some of the devs (probably nullc, he goes everywhere, even in rbtc!) might be able to see your objections! Or if your objections are very technical, head over to the appropriate pull request and object away!
Maybe you simply misunderstand something, and we can clarify it here!
Or maybe you do have a good objection, and we can make Taproot better by finding a solution for it!
I built a decentralized legal-binding smart contract system. I need peer reviewers and whitepaper proof readers. Help greatly appreciated!
I posted this on /cryptotechnology . It attracted quite a bit of upvotes but not many potential contributors. Someone mentioned I should try this sub. I read the rules and it seems to fit within them. Hope this kind of post is alright here... EDIT: My mother language is french (I'm from Montreal/Canada). Please excuse any blatant grammatical errors. TLDR: I built a decentralized legal-binding smart contract system. I need peer reviewers and whitepaper proof readers. If you're interested, send me an email to discuss: [email protected] . Thanks in advance! Hi guys, For the last few years, I've been working on a decentralized legal-binding contract system. Basically, I created a PoW blockchain software that can receive a hash as an address, and another hash as a bucket, in each transaction. The address hash is used to tell a specific entity (application/contract/company/person, etc) that uses the blockchain that this transaction might be addressed to them. The bucket hash simply tells the nodes which hashtree of files they need to download in order to execute that contract. The buckets are shared within the network of nodes. Someone could, for example, write a contract with a series of nodes in order to host their data for them. Buckets can hold any kind of data, and can be of any size... including encrypted data. The blockchain's blocks are chained together using a mining system similar to bitcoin (hashcash algorithm). Each block contains transactions. The requested difficulty increases when the amount of transactions in a block increases, linearly. Then, when a block is mined properly, another smaller mining effort is requested to link the block to the network's head block. To replace a block, you need to create another block with more transactions than the amount that were transacted in and after the mined block. I expect current payment processors to begin accepting transactions and mine them for their customers and make money with fees, in parallel. Using such a mechanism, miners will need to have a lot of bandwidth available in order to keep downloading the blocks of other miners, just like the current payment processors. The contracts is code written in our custom programming language. Their code is pushed using a transaction, and hosted in buckets. Like you can see, the contract's data are off-chain, only its bucket hash is on-chain. The contract can be used to listen to events that occurs on the blockchain, in any buckets hosted by nodes or on any website that can be crawled and parsed in the contract. There is also an identity system and a vouching system...which enable the creation of soft-money (promise of future payment in hard money (our cryptocurrency) if a series of events arrive). The contracts can also be compiled to a legal-binding framework and be potentially be used in court. The contracts currently compile to english and french only. I also built a browser that contains a 3D viewport, using OpenGL. The browser contains a domain name system (DNS) in form of contracts. Anyone can buy a new domain by creating a transaction with a bucket that contains code to reserve a specific name. When a user request a domain name, it discovers the bucket that is attached to the domain, download that bucket and executes its scripts... which renders in the 3D viewport. When people interact with an application, the application can create contracts on behalf of the user and send them to the blockchain via a transaction. This enables normal users (non-developers) to interact with others using legal contracts, by using a GUI software. The hard money (cryptocurrency) is all pre-mined and will be sold to entities (people/company) that want to use the network. The hard money can be re-sold using the contract proposition system, for payment in cash or a bank transfer. The fiat funds will go to my company in order to create services that use this specific network of contracts. The goal is to use the funds to make the network grow and increase its demand in hard money. For now, we plan to create: A logistic and transportation company A delivery company A company that buy and sell real estate options A company that manage real estate A software development company A world-wide fiat money transfer company A payment processor company We chose these niche because our team has a lot of experience in these areas: we currently run companies in these fields. These niche also generate a lot of revenue and expenses, making the value of exchanges high. We expect this to drive volume in contracts, soft-money and hard-money exchanges. We also plan to use the funds to create a venture capital fund that invests in startups that wants to create contracts on our network to execute a specific service in a specific niche. I'm about to release the software open source very soon and begin executing our commercial activities on the network. Before launching, I'd like to open a discussion with the community regarding the details of how this software works and how it is explained in the whitepaper. If you'd like to read the whitepaper and open a discussion with me regarding how things work, please send me an email at [email protected] . If you have any comment, please comment below and Ill try to answer every question. Please note that before peer-reviewing the software and the whitepaper, I'd like to keep the specific details of the software private, but can discuss the general details. A release date will be given once my work has been peer reviewed. Thanks all in advance! P.S: This project is not a competition to bitcoin. My goal with this project is to enable companies to write contracts together, easily follow events that are executed in their contracts, understand what to expect from their partnership and what they need to give in order to receive their share of deals... and sell their contracts that they no longer need to other community members. Bitcoin already has a network of people that uses it. It has its own value. In fact, I plan to create contracts on our network to exchange value from our network for bitcoin and vice-versa. Same for any commodity and currency that currently exits in this world.
How YFI came out of nowhere to become the fastest coin to reach $1B and the fastest coin to ever get listed on Coinbase
Note: As mentioned to the original 624 Reddit subscribers, there will be $YFI based Exclusive Original Content released here by myself and others from time to time. These kinds of interactive Deep Dives with a Q&A with fellow Investors / Beta Testers right afterwards is a rare thing in Crypto, and will only be found with this level of immediacy, social interaction, permanence, depth, and complexity of analysis and feedback on a platform like Reddit. A lot of projects have low innovation, just copying something that someone else has already done, but with small tweaks to things like variables in Smart Contracts. A few rare projects have genuine innovation, providing genuine value to investors and users by providing attractive new products that simplify a lot of things in this space. Even rarer are the Unicorns that not only have innovation, but they have innovation in spades, oozing out of every pore. $YFI is one of these types of Unicorns. The scope of products and rapidity of release of new revolutionary products of this project has been simply unmatched in the short history of Crypto. Since 2009, the world of crypto has never seen anything like this lightning fast pace of development spanning such a wide scope of products - optimized automated yield farming and lending that relentlessly hunts the best yields, crypto insurance on Smart Contracts, a revolutionary Stablecoin idea that essentially makes a USD altcoin "smart" with built-in yield farming capabilities for the first time, to name a few - all built by a genius Smart Contract Builder who provided the world the first Fair Launch token. Key to wrapping your head around the advantages that the yEarn Finance ecosystem has over - well, every single other option out there at this time - are the concepts below:
CeFi vs. DeFi
Smart Contract Stacking
The power of a Talented and Diverse DAO
To discuss these concepts, and to educate beginners, we have to understand what the terms above truly mean. This post doesn't discuss any particular products and their advantages, only the systemic advantages that are available only to $YFI. This project seems to attract the smartest and the highest risk taking of crypto investors, and an important thing in truly understanding all of the risks involved, is that you have to know the terms and concepts first. Even veteran crypto and DeFi users may be thrown for a loop by some of the innovative products and concepts that keep coming out of the YFI Labs. This project is going through an expansion phase, where the scope of everything and the reach of the various released products is increasing (Insurance, A truly pegged Stablecoin, yETH Version 2, ySwap, yLiquidate, etc, etc..) You know that there's some motherforker or twenty that is now just avidly waiting for every piece of code that Andre drops onto GitHub, so that they can be among the first to copy it verbatim then claim it as "their own variation" because they changed some variables and titles. Yawn. From the definitive glossary for the DeFi space - yet another $YFI innovation - I'll list their definitions below. These may not be their final definitions when I finish any V1.1 edits to it, but they're good enough for now, and at least 3 or more YFI Dev Team members have read, reviewed, or edited these definitions. I've also invited my fellow Beta testers to provide comments to my RFC on this subreddit and in the Governance forum (among the documentation volunteers). Yes, this is how early DeFi investors are in the development and maturation of the DeFi space. Anyone reading this right now is so early into DeFi's evolution that the terms used for this space are literally still being finalized by the community. I've given a little bit of a sneak peek into how technical documentation is somehow self-organized in a powerful DAO such as this one. In this example, it starts off with a call for help on Twitter to improve our documentation by tracheopteryx. Interested and qualified volunteers show up (or don't) when such a call is made. Your writers and editors have spent many a moment pondering off into space debating whether this term really means this or that, or if the term was either succinctly described, or fully sufficient. It's a usually thankless and anonymous job, that is critical in providing enough relevant information to its users and investors. [Note: Just like anything you see related to the $YFI project: You can help us improve this documentation - any of it - if you see errors or better ways of describing this information.] All terms are shamelessly plagiarized from myself and my fellow writeeditors - u/tracheopteryx and Franklin - from the draft definitions in our new DeFi glossary: https://docs.yearn.finance/defi-glossary 1. CeFi vs. DeFi CeFi - Centralized Finance. In terms of cryptocurrency, CeFi is represented by centralized cryptocurrency exchanges, businesses or organizations with a physical address, and usually with some sort of corporate structure. These CeFi businesses must follow all applicable laws, rules, and regulations in each country, state, or region in which they operate. DeFi - DeFi, or Decentralized Finance, is at its root a set of Smart Contracts running independently on blockchains such as the Ethereum network. Smart Contracts may or may not interact with other smart contracts and even other blockchains. The goal of DeFi is to enhance profitability of investors in DeFi through automated smart contracts seeking to maximize yields for invested funds. DeFi is marked by rapid innovative progression and testing of new ideas and concepts. DeFi often involves high risk investing sometimes involving smart contracts that have not been audited or even thoroughly reviewed (a review is not as comprehensive as an audit, but may be also be included as part of an audit). Due to this and other reasons, DeFi is conventionally considered to be more risky than CeFi or traditional investing. Comment: DeFi is higher risk, partly because it moves so fast. A lot of yams, hot dogs, and sushi can get lost when you move so fast that you can't even bother to do a thorough audit before releasing code. The cream of the crop projects will all have had multiple audits done by multiple independent auditors. Auditors are expensive. At such an embryonic stage, most projects can't afford to have one audit done let alone 5. But if you can live with that higher risk intrinsic in DeFi and be willing to be a part of "testing in prod," then financial innovation can truly blossom. And if you let your best and brightest members of your community focus only on doing what they do best, then they don't have to bother to try to grow a business like a Bezos, Musk, or a Zuckerberg. Innovative entrepreneurs in this mold such as Andre, don't have to even try to do this business growth on their own because the DAO sets it up so that they don't have to do this.The DAO both grows the business while supporting and allowing these innovators to simply innovate, instead of trying to get nerds to do backroom deals to gain market share and access to new customers. It turns out that nerds are much more productive when you just let them be a nerd in their labs.
Composability - The measure of the usability and ability of a product to be used as a building block (or "money lego") in the construction of other products or domains. A protocol that is simple, powerful, and that functions well with other protocols would be considered to have high composability. Comment: The maturity of the cryptocurrency ecosystem and the evolution of composable building tools in the DeFi space now make new products and concepts available. $YFI would not have been possible only 2 or 3 years ago; the tools and ecosystem simply weren't ready for it yet. This is why only now are you and many other now hearing about YFI. In 2018, Andre began providing free code reviews to Crypto Briefing. Andre had to learn to walk before he could run, and the composable tools needed to work on embryonic ideas in his head were simply not ready or available then. By reading and reviewing so many Smart Contracts he learned to recognize good code from bad code at what was still a very early stage in Smart Contract development in 2018, only 3 years after ETH's launch in July 2015.
Smart Contract Stacking
Smart Contracts - A digital contract that is programmed in a language that is considered Turing complete, meaning that with enough processing power and time, a properly programmed Smart Contract should be able to use its code base and logical algorithms to perform almost any digital task or process. Ethereum's programming languages, such as Solidity and Vyper, are Turing complete. Comment: Smart Contracts have actually gotten smarter since ETH launched in July 2015. It's because Smart Contract builders needed to learn Solidity and how it functions and interoperates before they could spread their wings as designers. With more time and experience under their belts, the early SC builders that stuck to it have gotten much better. In Andre Cronje, we may have been witness to the rise of the next Satoshi or Vitalik of crypto. There is a reason that a couple of days ago, I counted 6 of 41 YF clones - nearly 15% - among the top gainers on the day. Success breeds copycats showing a ton of flattery. A smart contract is so smart, it can be used to be stacked upon other smart contracts such as at Aave or Maker. True innovation takes time, sacrifice, blood, sweat, and tears. It does not come without cost to those doing the innovating. There is not a single project in DeFi, CeFi, or even all of cryptocurrency that can claim the breadth and diversity of innovation and product reach that is found in the $YFI ecosystem. As a tech investor and professional nerd who's been involved at Research Labs and around product development and testing since before the year 2000. Prior to that I've ready widely and keenly to keep up with technological changes and assess investment potential in these disruptive changes nearly my whole life. The amount of innovation shown in this project is breathtaking if you're a Tech or FinTech researcher. It's being released at a ridiculously rapid pace that is simply unmatched in any private or government research lab anywhere, let alone at any CeFi or traditional financial institution one can name. The only comparable levels of innovation shown by this young project is typically only seen during periods of epochal changes such as The Renaissance or times of strife and war, such as World War II. Unless you've been in the industry and working with coders:I don't think those that haven't been around software development and testing can understand, can truly grasp that no one, no group does this.This isn't normal. This rapid-fire release of truly innovative code and intelligent strategies would have to be comparable to some of the greatest creative periods of human ingenuity and creativity. It's truly on par with periods of brilliance seen by thinkers like Newton, Einstein and Tesla, except with software code and concepts in decentralized finance. When the history of FinTech writes this chapter in its history, $YFI may need its own section or chapter. Don't forget all of these financial instruments we take for granted all around us, all had a simple start somewhere, whether it was an IOU system of credit, insurance, stocks, bonds, derivatives, futures, options, and so on...they all started off as an idea somewhere that had to get tested sooner or later "in production." One brilliant aspect of $YFI Smart Contracts is that they're built as a profitable layer atop existing DeFi protocols, extracting further value from base crypto assets and even primary crypto derivatives. $YFI is built atop existing smart contracts to create further value where there was none before, and help maximize gains for long term investors.
The Power of a Talented and Diverse DAO
DAO - Distributed Autonomous Organization. The first DAO was started in 2016. According to Wikipedia's definition, it is an: "organization represented by rules encoded as a computer program that is transparent, controlled by the organization members and not influenced by a central government. A DAO's financial transaction record and program rules are maintained on a blockchain." When implemented well, a DAO allows for real world experiments in decentralized democratic organization and control, with more freedom of action and less regulatory oversight for DAO controlled projects and products when compared to legacy corporate structures and organizations. Comment: yEarn Finance has shown us what a properly motivated and sufficiently powerful DAO can do in a short amount of time. There's many reasons why this project with an already profitable business model is the fastest original project in history to ever reach a $1B marketcap in any market - traditional or crypto - accomplishing this amazing feat in less than two months. There's reasons why this is probably the fastest coin in history to get listed on Coinbase in less than 2 months. The power of a sufficiently talented and diverse development team and community is stunning in its power, speed, and ability to get things done quickly. There are risks aplenty with parts of this project, but $YFI is now seen as a "safe" place in DeFi, because you know you that as far as yield farming you probably couldn't do it better yourself unless you took a chance on unaudited code with anonymous Devs, or you were doing the trading equivalent of throwing darts blindfolded and somehow won, except that you even more improbably kept doing that over and over and winning. Summary: There's reasons why YFI has been called the Bitcoin of DeFi and the Berkshire Hathaway Series A of crypto. I've listed some of the reasons above. The confluence of these 4 factors has helped lead to explosive growth for this project. This isn't financial advice as I'm not a financial pro but make no mistake: as a Crypto OG around crypto since early 2013, who was deeply involved in multiple community projects as an early organizer, and who was a small investor during the DotCom era investing in early giants that went on to be gorillas, I don't say this lightly that the $YFI project is lightning in a bottle and a diamond in the rough. What $YFI allows, when all is said and done, is the rapid fire implementation of great ideas that have gone through a rapid Darwinian evolution, where only the best ideas are implemented. Thoughts and ideas are powerful things. The valuation of this coin and ecosystem has to, itmusttake into account that this nascent financial innovation hub and ecosystem actually works and allows the best of these ideas to actually blossom rapidly. You just don't find too many gems like this.
Updated list of Global Beermoney opportunities (+180!) - June 2020
Updated list of Global Beermoney opportunities (+180!) - June 2020
The current, and now previous, Beermoney Global list started nearly 5 years ago. It’s been updated and has grown over all that time, but it also became a hassle to keep current. It was time to build a new list from scratch based on my experience in the Beermoney world over all these years and all the contributions all of you have been making in this sub. The lists consist of opportunities that are available in at least one country that is not the US. This means there are sites which only work in Canada or the UK. There’s sites which are open to the whole world, but this does not mean everyone can really earn something on it. It’s all still very demographic and therefore location dependent. This list should give you a starting point to try out and find what works for you. I’m not using everything myself as I prefer to focus on a few, so not all are tested by me. They are found in this sub, other subreddits and other resources where people claim to have success. I’ve chosen the format of a simple table with the bare minimum of information to keep things clean. It includes a link, how you earn, personal payment proof if available and sign-up bonus codes if applicable. Some of these bonuses are also one-time use codes specifically made for this sub! For the ones I don’t have payment proof (yet) feel free to provide some as a comment or via modmail so others know it’s legit. I am working on detailed instructions for each method that I personally use which will include things like cashout minimum, cashout options, tips & tricks,... For now I’ve split things up based on the type of earning like passive or mobile. Because of this there’s sometimes an overlap as some are both passive and on mobile or both earning crypto and a GPT (Get Paid To) website. The lists are obviously not complete so I invite you to keep posting new ones in the sub, as a comment to this post, or in modmail. Especially if you have sites or apps which work for one single specific country I can start building a list, just like I did for The Netherlands and Belgium. If you recognize things which are in fact scams or not worth it let me know as well.
Get Paid To (Surveys, tasks, offers, videos, clicking links, play games, searching)
For The Netherlands there are a few very good options next to a bunch of ‘spaarprogramma’s. There ‘spaarprogramma’s are all the same where you receive and click a bunch of e-mails, advertisements, banners,... I advise you to create a separate e-mail address or use a good filter in your inbox as you will be spammed to death. I believe they can be a nice piece of beermoney but they take quite the effort.
Interest for Software/Programming/Hardware/Tech Club
I think it would be cool if there was a club where intriguing hardware and software projects and/or technologies could be showcased and discussed, with an interactive walkthrough session every once in a while to teach members about how to get started with something interesting the club previously discussed such as a language, tool, device, or really anything else except game design (because there is already a club for that). The inspiration for this comes from my friend from UBCV CS year 2 who created UBCCourses.com with a friend, and the recent release of UBCGrades.com v2; I think people would find it interesting if there was a weekly meeting where someone could explain how projects such as these work on a code level and then just do an activity with the group on what they'd like. These meetings could even cover hot-topic technologies such as cryptocurrencies (explaining centralized and decentralized exchanges such as UniSwap, coins, blockchains, wallets, mainstream currencies such as Bitcoin, altcoins, etc), algorithmic stock trading, web development, artificial intelligence, containerization, IoT with devices such as Arduino and Raspberry Pi, and really anything else anyone finds and is interested in. If you are interested, please leave an upvote or comment in support, as I am looking to start this if there is enough interest. If something like this already exists and I have missed it, please let me know! Update: This endeavour might be integrated into an existing club if it's compatible, but we'll see. Still drop an upvote or comment if interested so I can see if people like the idea. Update 2: Am thinking of maybe also doing physical project sprints such as making a robot dog, racing drones, or if there is enough interest, something more ambitious like making an electric dragster out of an upgraded and fixed second-hand golf cart or something.
"Read.cash Founder Threatens Ban & Permanent Fund Blacklist of 100 Users by Midnight London Time Tonight" Response from the read.cash founder
(Sorry that I post it here, the letters will be small, it would have been much better on read.cash, but it contains personal attacks on C. Edward Kelso and Shammah Chancellor, so I would have to ban me on read.cash for this post) This is probably the most personal story I've ever published on the Internet on how your project will come back to haunt you and destroy your mind and your life. CoinSpice should find enough "juicy" details here to humiliate me even further, I think they still could! I believe in their potential! Should I send you my nudes to post, CoinSpice, for you new article? (No, I'm not a girl, in case you're wondering) Enjoy it if you like long reads. Warning: it contains quite a few jabs at some people. So, you might have read this "piece" from afriendofsatoshi C. Edward Kelso Chief editor of CoinSpice https://www.reddit.com/btc/comments/i067py/readcash_founder_threatens_ban_permanent_fund/fznpi0x/ I'm really disappointed in CoinSpice. Anecdote from the past about them: my interview with them was terribly handled. I started the interview with them with "English is not my native language, so feel free to fix any errors you see in my answer", what did they write in CoinSpice? "We were able to determine that he is not a native English speaker" Seriously, "were able to determine", Sherlock?... why did you even need to publish that? To add a bit of a sensation? But this new piece from CoinSpice just breaks through the floor... I'm speechless... If you are ever offered to being interviewed by CoinSpice - run away! Save yourself!
28 July, 2020 An uneventful day on read.cash, people posting pictures of flowers, telling stories how they met their spouses, doing contests about who will sponsor whom, posting articles about teamwork and interviews with prominent Bitcoin Cash figures. Seriously, read.cash guys interviewed tons of Bitcoin Cash supporters (After the interview with CoinSpice I never gave anoter interview to anyone fearing it will be exactly unprofessional as CoinSpice - trying to get every little dirt the could dig out there) micropresident (the guy who does not yet know he's going to, very professionally, like a normal stable developer he is, later go on to tell me "fuck read.cash") publishes a contest where he calls for memes that contain the following phrases: "Amaury the Socialist Dictator", "Marc De Mesel is Calvin Ayre Lite") promising up to 2 BCH in return (I believe, I didn't read his rules) for these memes. Since a lot of read.cash users are from Philippines, Nigeria and other poor countries, where $300 is a lot of money (maybe something you will make in a year), people proceed to create these memes. This goes directly against the rules of the site that everyone must agree before they sign up, directly violating the rule: "No name-calling, trash-talking, personal attacks or insults." I log in to read.cash and notice the homepage full of low quality posts attacking Amaury, Marc, ABC, upvoted to no end, tons of boosted posts and Shammah giving $$ left and right for this stuff. I publish 2 responses where I tell people to remove the memes that contain personal attacks or face a ban. https://read.cash/@Read.Cash/the-state-of-things-33c3d68a and https://read.cash/@Read.Cash/post-a4935cbd Most of the people agreed and removed the offending memes and had no problem with it, many said they were sorry. u/micropresident in a very professional manner proceeds to tell us to "fuck [ourselves]" and tells he's building a clone (non-moderated I presume). He also quotes us very calmly and professionally adding: "Complete bullshit" referring to rules of read.cash CoinSpice proceeds to publish the "celebrity upskirt" kind of article "Read.cash Founder Threatens Ban & Permanent Fund Blacklist of 100 Users by Midnight London Time Tonight". Emphasis mine, I just can't stand this kind of language... this is yellow press at best. It only lacks "Reason #2 will shock you!" in the title... So, back to the story.
Why do we even have this rule?
Is it because I'm an egomaniac that hates people? Is it because I'm secretly funded by BSV? Is it because Marc de Mesel donated nearly $100,000 to the fund? Is it because I love censoring people? No, no and no. It's because I want Bitcoin Cash adoption. I frankly wanted Bitcoin adoption since 2013, alas, the tiny blocks and huge fees won't allow that. So I had to switch to Bitcoin Cash which kept Bitcoin idea going. Do you have a friend that is not deep into cryptocurrency? Tell him/her to join the Crypto Twitter. They will look at it for five minutes and tell you: "Are you crazy? These people are constantly attacking and mocking each other. What if I do something wrong? Why are they doing it? Are they mentally ill? Is this really the money of the future?" This will be his answer for nearly every site or platform that talks about cryptocurrency. It's everywhere. But with Bitcoin Cash somehow it's very ingrained into the nature. I understand, Bitcoin Cash was attacked so often that it became a second nature of some people to attack everything they don't like. Don't like Amaury? Let's attack him! Why? Don't care! I just don't like him! Don't like Marc de Mesel? Let's attack him! Don't like CSW and Calvin? - Let's attack them. - But why? They don't do anything bad to us now. - Wait, are you one of THEM? Let's attack or you'll be attacked! Fuck you, you and you and read.cash, fuck yeah! Attaccckkk!!! This all seems totally crazy to a newcomer. But what do we want to achieve with read.cash? Getting newcomers to use Bitcoin Cash. Without the drama or craziness. Just some flower pictures. Up until 28 July, 2020 this was the case. People were posting innocent pictures, got payments from the fund, tipped each other, sponsored each other, yelled at me for not getting paid enough. Occasionally, we had some dissenters, like *****, who proceeded to tell spammers that they are "fucking cunts", got a warning for that, left forever, deleting all articles, returned, started attacking people again, got banned for that, started telling people on memo.cash how stupid read.cash is because we didn't manually ban the spammers and wasted time programming software to detect them... Ok, weird thing - she seems to recommend people to join read.cash now, which is confusing, so I removed her name. Then there were people who wasted hours upon hours of my day by asking stupid questions, who got blocked (from me, not from read.cash)... But mostly things were okay with read.cash (not with me though). We've got 12,000 users, very few incidents, the fund got a donation from Marc de Mesel for nearly $100,000 which will pay new users for a year or so. We gave away money to 5,700 people (for free)! I want to stress one part here. Marc has donated (unconditionally) more than 97% of the fund. More than 30 times more than all of the Bitcoin Cash ecosystem combined donated. Read that part again. Marc donated 30 times more than everyone else in the Bitcoin Cash ecosystem combined! Unconditionally. I haven't received any condition about the donation use. Marc even told us that he's willing to donate much more! Which we hastily declined, because read.cash is not profitable and it doesn't make sense to spend more than we would have gotten from ads if we were monetized. read.cash can't be living off donations forever. It's unsustanable. So we spend via the fund approximately what we would have gotten if read.cash was plastered with ads. But again, 12,000 users of read.cash is 97% MarcDeMesel's achievement. That's 12,000 users of Bitcoin Cash. Isn't "adoption" what you wanted? Yet, the guy who said "fuck read.cash!", all the while getting top payments from the read.cash fund, proceeds to create a contest about "Marc is Calvin Ayre Lite"... Told that this is a personal attack, replies "Complete bullshit!" (exact quote) Note: Marc is actually OK with memes about him and asked us directly to revert our policy to allow the [offensive] memes It wasn't Marc's initiative, it was mine. And it wasn't only Marc who were being mocked. I'll admit right here - I don't like Amaury's actions, I don't like IFP (and I listed my reasons), but I'll warn/ban anyone directly attacking him on read.csah (not his thoughts, but just him). Wanna discuss how Amaury's idea about DAA is bad? Feel free! Wanna call him an idiot? Welcome to ban'sville, population - you. Well, usually a warning, then a ban if you insist on doing that. The same will go for CSW, Calvin or anyone anywhere.
Are you crazy? Did you just say you'll protect CSW and Calvin? We've got a BSV shill here! Attackkk!!!!
No, no and no. We have no funds from BSV (as far as I know, the fund is non-custodial and permissionless - anyone can donate and cancel at any time), I've never contacted Calvin or CSW and I've been attacked by BSV people on multiple occasions and was accused of being a BSV shill on multiple occasions (besides people telling me to "fuck [my project]"). One thing I figured early on is that if you allow people to do something, you need to apply that rule to everyone. Otherwise, you are a hippocrite and you should hang your head in shame. If you allow people to mock and denigrate Amaury, Marc, BSV, BTC supporters, that's the fine line that you'll have to keep later on, when BTC and BSV supporters come. How come you're allowing people to mock a BTC supporter, yet you protect a BCH supporter? That's dishonest. So we will have to allow BTC and BSV supporters to mock us and denigrate us. Because that's the rule. You allowed it! They will be right. So if we allow people to attack other people (even if I don't like them), everybody would be entitled to attack everybody. That's where you start your journey to becoming a Crypto Twitter, where you will be attacked for nothing, where a snowball will roll on you (it did on me, but thats another story), where people would start to stalk you and try to ruin your life, because you like the coin they don't like. That's a place which normal people won't ever join. Read it again: No adoption for you, no world money! So, you either have "no censorship" (which is really moderation) or you have normal people. Choose one, choose wisely, you won't be able to change it later. We chose "normal people". The plan was working fine (almost) until the eventful post. But I will not revert this policy. I hope I explained why.
Koush: But you allow worse crimes to happen on read.cash!
Ok, here's a yellow press sensation worthy of coinspice.io! Listen carefully! #1 will shock you! I am... one guy. Yes, read.cash is a one-man shitshow. I'm the backend developer, I'm the frontend developer, I'm the system administrator, I'm the moderator, I'm the policy maker, I'm the one who replies to 100+ emails daily on [email protected], I'm the one getting up to 200 notifications per day on read.cash, I'm the one who writes articles, I'm the one who wakes up at night when a server fails, I'm the one who logged 1000 hours developing read.cash according to my IDE's time tracking plugin, I'm the one responsible for the bug that took your money, I'm the one who returned you your money, I'm the one fighting spam, I'm the one writing code to catch spammers, I'm read.cash. I'm the one responsible to keep 7,500 comments per day (that's one comment every 10 seconds, 24/7), 800 articles per day, 400 short posts per day clean. See the stats yourself, the damn thing is growing and growing... It is an impossible task. But I do read every one of 100+ reports sent to me per day. And each one of them is a moral dilemma for me - what to do here. This guy has copied an article from the Internet, but edited it so that it looks like another article, what do I do here? Ok, this guy is posting non-sense - is that against rules? It's surely annoying, but doesn't violate the rules. What to do here? Now try this 100 times a day. This guy, Koush, I know, he's a good guy, but now he's attacking the only guy who really helped read.cash when no one else did? WTF do I do here? That's why I'm always telling people to report anything that they see that violates rules. I can't be everywhere. I can't make the right decision every time too. I'm a regular fucking person. Two legs, two hands, one medium-sized brain. Ok, to be honest, a few months ago I asked a developer friend to join me to help (paid with my own money, not using read.cash fund for that), so he helps some 10 hours per month. That helps, surely, not enough. Though I'll still call read.cash we, as it is still a registered company. BTW To be clear - I never got any money from the read.cash fund, but I spent more than $5,000 giving away. Here's a screenshot from an internal tool that I call "the random rewarder": https://i.imgur.com/ucQEvVM.png As you can see, I'm entitled to about $1.31 - $1.39 for today, but I get $0.00. That was always the case, because I strongly believe that I must give it to people of read.cash to attract new users. I also gave away 100% of the funds that came to me as tips on read.cash. BTW Did you notice that on the screenshot the guy who said "Marc de Mesel is Calvin Ayre Lite" and "fuck read.cash" got the top payment from the fund, which is at the moment 97% funded by Marc de Mesel? My friend, the developer, who joined me, told me a few days ago: "I read your history on read.cash, you sound progressively ..." "..depressive and passively aggressive," I ended his sentence, "I know." Yes, I know. I'm pretty passive agressive already, because every day I met with demands from users. "Why am I not getting paid?" "I work for read.cash for 8 hours a day, why is my pay so low?" "I sent some money and now I have $0.01 less than I should?" "How do I get sponsors?" "I think this guy is cheating!" "Hey, our family of 20 people joined read.cash and it says that I have 19 colocated accounts on the same IP! That's not true!" I loathe my morning, when I open my email and there's 50 new alerts from Sentry, there are 100+ emails from users demanding stuff from me, accusing me of being unfair, wrong, an idiot, telling me "fuck read.cash"! etc.. etc.. etc.. daily grind.. I never experienced anything like that. I was always a lead developer or manager managing small teams of 5-10 people. Nothing close to this shit I experience now. You get progressively less sensitive. You start to think that it's ok to just delete an email, since you can't reply to everyone. You can't research why someone of 12,000 people didn't get paid, since the algorithms are now so complex that you yourself will have to spend a week just researching one guy why he gets $0.10 instead of maybe $0.50... you have no idea who your users are. The project is out of your control. But you can't do anything, because it's not profitable enough to even cover the server costs, let alone hire additional programmer or a support guy. Then one day you log and see the beautiful garden full of dog shit. Crappy memes. A guy telling you "fuck you, there's $25K for the clone of this!" Thank God Shammah didn't offer that $25K for my head... You find this about the only guy who really helped read.cash with money and demanded nothing in return (not a single condition was made) being compared to a midget version of a guy who was in a FBI Top Wanted list! Again, Marc says he's ok with this, I'm not! Whoever did this meme is an asshole, I don't have any other words for this human. (Yes, I would have been banned on read.cash for this alone. You can ban me here, I no longer care...) You find yourself increasingly grumpy, angry towards those around you, your family, because everybody is angry at you in the Internet, people are demanding and people is attacking the only people you can trust (Roger, Marc)... You think about your previous nice cozy job. You think about 5 recruiters sending you daily mails to just name the price to join their company. You realize that these 9 months you could have made maybe $100,000, maybe $200,000 sitting on your ass, managing 5-10 people like you always did.. Instead you spent 9 months, $5,000 in Bitcoin Cash, got grumpy and depressed. You start to ponder why you do this and whether you should even continue. That's your future, Mr. Shammah Chancellor! That's the reality of running a social media platform with cryptocurrency. I will be happy to see your platform, Mr. "fuck read.cash", grow and flourish, but I warn you - it's not going to cost you $25K, but much much more. It's going to eat you alive if you are mildly successful with it and you have a little bit of conscience. You will be attacked, you will be spammed. People will tell you "fuck you!" I honestly have no idea why you think you will fare better than yours.org or honest.cash... What's your advantage? being censorship free, so that people can shit and pee on each other? Then one day 9 months later, 12,000 users, $50,000 in tips later, a guy will come in and tell you "Fuck you, Shammah and your project! Fuck you! I'm building a clone for $5K of this shit of a platform!" You will look at the clock where it's 8pm, you will look at your inbox, where there's still 50 more people yelling at you.. you'll ponder why do you even do this... That day you'll understand me, Mr. Chancellor. Or maybe not, I have no idea what kind of a human being you are. Maybe you're reading this and laughing madly: "poor pussy can't take a beating! boo-hoo! Get off the internet, you wuss!" Maybe that's your thoughts, I don't know. You certainly don't seem to care about other people's feelings dismissing them as "complete bullshit". Well kept gardens die by pacifism is a wonderful read about this.
Somewhere in the vastness of the Internet, it is happening even now. It was once a well-kept garden of intelligent discussion, where knowledgeable and interested folk came, attracted by the high quality of speech they saw ongoing. But into this garden comes a fool, and the level of discussion drops a little—or more than a little, if the fool is very prolific in their posting. (It is worse if the fool is just articulate enough that the former inhabitants of the garden feel obliged to respond, and correct misapprehensions—for then the fool dominates conversations.)
Peace, and out. P.S. I remind people that there's an ongoing fundraiser going for mainnet.cash, so anyone agreeing with "fuck read.cash" policy of Mr. Chancellor should cancel their donations while there's still time. It's very easy to cancel. Don't give your money to idealistic fools like me. P.P.S. I blocked u/afriendofsatoshi, so somebody please forward it to him so he can humiliate me further, only on coinspice.io! Subscribe now!
The BitCoin Code Review – It is a Confirmed SCAM! If you have not fallen prey to this scam, then congrats as you made a wise decision. You chose to be vigilant and check Bitcoin Code review on our blog before investing in it. Those experienced in Binary Options trading can look straight through the lies being propagated. 3. Best Bitcoin mining software CGminer. Pros: Supports GPU/FPGA/ASIC mining, Popular (frequently updated). Cons: Textual interface. Platforms: Windows, Mac, Linux Going strong for many years, CGminer is still one of the most popular GPU/FPGA/ASIC mining software available. CGminer is a command line application written in C. It’s also cross platform, meaning you can use it with Windows ... See on GitHub Script is a simple scripting language, as well as the core of Bitcoin transaction processing. If you ever wrote assembly code you’ll find this article very easy to understand –probably entertaining–, otherwise it might well be one of the most challenging. Individuals, businesses, developers: learn from our simple Bitcoin guides. How Bitcoin works, what is Bitcoin, what is blockchain, how to buy Bitcoin, what is Bitcoin mining and more. A special programming language was used to create Bitcoin Code, and it’s highly advanced This allows you to beat your competition, achieving more success and higher profits. Our software tries to predict how the crypto price is going to change and move before it does.
-------------------------------------------------------------------------------- Download: https://anonfiles.com/j4m326Lco7 -------------------------------... The Bitcoin Code Review - http://MentorWithNick.com https://www.facebook.com/groups/126439628047129/ https://facebook.com/mentorwithnick https://instagram.co... Earn $300 Everyday Guaranteed ️https://secure.binbotpro.com/tiny/7VuZi Blog Review ️https://binaryoptionsdoctor.com/bitcoin-code-scam-currency-review/ Bitco... ----- Bitcoin Source Codes ----- The bitcoin Github release page - versions 0.1.5 to 0.15: https://github.com/bitcoin/bitcoin/releases A copy of the first or... Zur Anmeldung https://bit.ly/2R9EcEo Dies ist kein schnelles Schema, da Bitcoin Code eine leistungsstarke Software ist, die mit einem fortschrittlichen und g...