Dummies Guide to Making Money from Bitcoin & Crypto 2020 ...

Everyday info sec, hardcore info sec, and DNMs

Edit: Currently writing a new version of this, dont know when it will be done.
Edit: Since first post I have updated a few sections with additional information.
I recommend reading it all even if it is very long, I might have placed some relevant info in different sections while thinking about what else needed to be added, plenty of steps remains mostly the same except when I comment directly on it. It is not necessary to do 100% security all the time, unless you absolutely need it, combining some high and some lower security ideas for a balance of security and convenience is useful.
I will base this mostly on Windows, Linux users probably know this, and I have no idea how apple machines work (tho many things in here are still relevant for other operating systems, as they are just general tips)
Disclaimer: There are certainly other steps that can make you more anonymous or safer, however I think for most people this will surfice. Any software I recommend should be independently verified for security, and examples of software are not to be taken as endorsements. I simply use examples and give recommendations when I believe it necessary, or helpful.
I will not really differentiate between anonymity and security, they are often the same thing. As such the word security can mean either more anonymous, less vulnerable, or both.
--------
Everyday Simple Info Sec:
-There could be a hidden administrator user on your PC, make sure to change its password
(Snapchat msgs, reddit dms, discord msgs, are just a few examples of msgs that are never encrypted)
-Any info even send in encrypted msgs (and obviously non encrypted) should still be kept with possible deniability, don't say "I'm gonna do MDMA", say "I'm going out with molly."
-DO NOT STORE ANY PASSWORDS ON GOOGLE, IF GOOGLE LOGIN IS AUTHENTICATED IT WILL AUTFILL ALL PASSWORDS IT HAS SAVED (same with other similar services) (This means if you are logged in to chrome and someone has access to your machine, they can auto fill passwords without entering a single password)
-use a rememberable passphrase, especially for your master key ring aka password manager A long sentence that is memorable makes an okay password (decent example,: "I met my wife at Little Ceasers for the first time on 07/09/20" better even if it's just something you know, if its impersonal, and if you can add special characters or numbers that you won't forget) (A better example for a passphrase is: "There is 0nly 0ne letter that d0esn’t appear in any U.S. state nameQ")
-Purge your internet activity frequently, there's a reason why I only have one post, and a few comments appearing in my account, but thousands of kama. Exposing information needlessly is not good.
-Never post private information publicly, and if you do, do it vaguely as possible. (Example: Not "I'm 15", say "I'm a teenager") Do not post any vital information ever, no birthdays, mother's maiden name, age, or anything you have ever seen in a security question. Never post your current activities while they are ongoing. You going on a vacation? Don't announce it to the world, taking picture there? Post them when you are home.
-Rethink how you do security questions. Many answers to security questions can be found in your internet history. One could use the first word of the security question as an answer, or a different sceme that will mean you always remember it. (Security question need to go, the amount of personal info an average person puts on the internet makes it easy to attack anything using security question)
-------_
High level crimimal information security:
The motto here is, "All the Security, All the Time" As one fuck up can end with you leaving a lick of traceability, and you could be fucked.
Pre Note: All of your software should always be up to date. Also even perfect info sec does not guarantee you are completely safe, a new zero day (exploit) can still fuck you, but good info security makes you significantly safer, by eliminating as many attacks as possible.
-Get a new device (or make a already owned device seem like you never owned it, do this only if you know how to, there's a lot of stuff that goes into that, like changing your mac adress etc) buy with cash, and your face covered, preferably far away from where you live. (Do I need to specify to not bring your phone or anything else that tracks your location to anywhere you want to go anonymously?) (Be aware that even hardware can have vulnerabilities, many cpus have known vulnerabilities, I can't list them all, do some research before buying)
-If you know how to use Tails (A linux distro designed for Info sec) use that, preferably on a USB. (Or learn how to use tails, its better, but complicated) Otherwise a clean copy of windows (make sure its not in any way associated with you) can do the job too, tho not as well. (Using a VM might give extra security, since VMs usually erase all data and RAM they were using on shutdown)
-Get a non tracking VPN, Enable the kill switch (a setting that disables all traffic that doesn't go through the VPN) (change your firewall settings to only allow the traffic from the VPN, windows guide (Change settings so only traffic from the tor application is send) Edit: (Due to complaints: do not use vpn over tor, use tor over vpn. tor over vpn has no notable downside, if the VPN logs it makes no difference, your ISP will always log anyways, and vpns remove other attack vectors and also provide backup security should tor fail. Again even if the VPN tracks you only change the people doing the tracking, but now you are further removed making it more anonymous and also with less vulnerabilities)
-rember privacy settings, cookie cleaner, and antivirus, password (There could be a hidden administrator user on your PC, make sure to change its password)
-Always use the device on a non admin account
-Ideally use this device only on networks that are not connected with you. Such as public networks (try to never use the same public networks twice, move around) (a home network should be fine now, as it should never be exposed, but more security is always better) (Its just a conveniences vs security trade)
-Never use accounts that have been exposed to lower security on higher security machines
-your browser is now TOR (or your preferred security focused browser, if you dont plan on using onion ) Make sure you get the standalone version of tor not the addon build (the standalone is safer, because there are less settings and options to tweak)
-Change your tor settings, to safest mode, enable a bridge (to my knowledge there's no difference in security between the build in bridges in tor), enable automatic updates, set duckduckgo onion as your primary browser. Set dark.fail onion page as your home page. (Or your preferred privacy search engine and onion directory)
-------_
How to use dark net markets (DNMs)
If you finished your High Security setup, we can dive right in. Otherwise go do that. This is where all that is essential.
Quick info on Tor, and onion sites. There is no search engine. It's all based of directories and addresses you are given by others. Tor will likely not be very quick, it has to pass through multiple networks to get to the destination. DNMs sometimes exit scam, an exit scam is when a market shuts down completely and takes all the money, this is a risk when using DNMs, it's not too common but happens maybe 0-4 times a year. The admins of thoese servers need to get out at some point, before they get jailed, so they exit the game, and scam everyone out of their money.
-A very useful onion directory is dark.fail it has a lot of links, for all kinds of stuff. News, email, DNMs, Psychonautwiki (harm reduction website), forums etc. (Other directories also exist)
-Pick a market, preferably one that handles secure connection server side instead of requiring you to establish the secure connection. Then create an account. Your account once created should include an entry box in your profile for a pgp key, post your PUBLIC key in there. (Verify the link is not a scam, most markets should provide a pgp signature)
-Next is currency setup. All major cryptocurrency exchangers can be used, I can recommend coin base but there could be better ones out there. Unless you find a small non U.S., exchange, they will always ask for your identity. So unless you can find a trustworthy exchange that doesn't ID, you will need to give it to them. (Side note, all major crypto exchangers report to the IRS, if the IRS asks you if you bought cryptocurrency and you bought while having IDed yourself SAY YES, DO NOT COMMIT TAX FRAUD WHEN THEY KNOW YOU DID)
-Transfer (monero you can send directly, btc you should scramble) to your wallet. There are two options a cold wallet (physical) or a software wallet. Software wallets usually dont cost anything so I recommend them, even if often less safe. Electrum is easy to use, and pretty safe. You can also do your own research and find a wallet that fits your needs.
-now you are ready to buy, only buy using escrow (it means the money is held by the market as a middle man until the product is delivered, they will also handle any issues like wrong quantity, cuts, etc), judge the reviews for a product, and if available look at the history of the vendor, until you find a product from a vendor you trust. (I recommend to buy within your country as much as possible, so it doesn't go through customs, it's very rare that something is found, but it can happen)
-now you get to buy, depending on market, you either have cryptocurrency stored in their wallets (not recommend, you will lose it in an exit scam) or you can send it every order. When you send your delivery adress (or the one you want it to go to) encrypt the adress using the sellers public key. Make sure the adress is correct.
-wait for the product, make sure to extend the escrow until the product arrives, if you can't extend it anymore dispute the order, and a moderator will step in
-test the product, use it, and leave a review. PLEASE LEAVE A REVIEW, DNMs only work because of reviews.
Edit: Didn't imagine I would write over 15000 words. Oh well, it was fun. Hope it helps, if you have any questions feel free to ask.
No idea how long this will stay up, I might purge it in 7 days, or never.
submitted by seven_N_A7 to u/seven_N_A7 [link] [comments]

Technical: Taproot: Why Activate?

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.
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:
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:
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.)

Quantum Quibbles!

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.
So:
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).

Summary

I Wanna Be The Taprooter!

So, do you want to help activate Taproot? Here's what you, mister sovereign Bitcoin HODLer, can do!

But I Hate Taproot!!

That's fine!

Discussions About Taproot Activation

submitted by almkglor to Bitcoin [link] [comments]

List of current UI/UX issues & possible QoL improvements (Megathread?)

As some of you know, I only make stupidly long posts and also like to humbly brag about being a software engineer with fairly decent experience in QA, automated testing and testing in general (6+ years a C# dev).
This is my personal list of things that either make no sense, are unpleasant, incoherent, or could be improved.
Please feel free to add to the list, I will come back and edit every day.
Numbers are also here to help you quote & provide your own criticism.
Note that is is done with the following optimization mindset, in order of importance :
As you can see I worked under the assumption that the average player wants to spend more time in raid rather than in inventory ; obviously this falls apart if that is not the case. To do that I try to improve time spent on searching / arranging things without creating unecessary automation or remove important/immersive aspects of the game, even in inventory. I also try to improve time spent clicking through various windows as currently a lot of them are done to be fast & easy to for the devs, not for the players. I want to emphasize that I'm okay with that. I know the importance of having sub-optimal navigation to help you find out what your better navigation is. I also know a complete rework is not always possible, that is why I made my list without changing too much of the menus as well as keeping the vibe/current feel of those menus.
Keywords like should & could are used as intended ; since this is not a professional report I'm emphasizing here, the meaning of the word is important. Should means it is adding an improvement over an existing issue, could means it's a possible improvement but requires further investigation. Would means investigation was done and is just one possible outcome usually relevant within the context.
Please note that most of us now are very used to the current UI/UX, which will generate two reactions:
- "It's fine as it is because I can do it quite fast."
- "I don't want it to change again, I'm used to it now."
I cannot emphasize how unefficient it is to let those emotions get the best of you. UI/UX is the study of common sense & ease of use in an interface. You should never have to get used to anything, it should be fluid and intuitive. If you think you're fast now, that means it's possible to be slow. This is extremely bad for a UI/UX standpoint. Everybody should be able to navigate/understand the menus just as fast the 1st time than the 100th time (ideally). Keep this in mind when you read everything down here, because some stuff you probably won't like at first glance, but you will get used to it very fast, and you will gain a lot of time in the future, as well as new players.

1. Autostacking of items

Money & Ammo. When a stackable item or stack of items enter an inventory, it should autostack itself to an available non-full stack, then fill other available stacks until there aren't any. At that point, the item should just go at the top of the inventory as it is doing now. Autostacking should *not* browse for sublayers of inventory.
Items drag & dropped on an inventory slot should not be auto-stacked either (drag & drop overrides autostacking).
It would autostack when control clicking, or using "Receive all" from another inventory, or when dropping into a sublayer without selecting a specific slot.
Autostacking should only stack FiR items together and non FiR items together.

Example 1

Drag & Dropping would not stack in the same inventory layer. Drag & dropping would override auto stacking.

Dragging over the money case would auto stack in the inventory of the case.

Using Ammo as example here. If you drag & drop directly on a slot (even in an inventory sublayer), you would override autostacking.

2. Highlighting of full stacks

Stacks at full capacity could be highlighted for easier inventory management.
Many aspects could be used to highlight (either the name of the item, or the value, or the background of the cell)

Apology for the poor photoshop skills

This could be a highlighting method

This could be a highlighting method

3. Consistent item order in hideout craft list

Currently when in the workbench (and I think others? now I doubt), the list of craftable items appears to be random. The order should always be the same for consistency. Does not provide meaningful gameplay experience to have to "look for the recipe" every time.

4. Collecting crafts

Hideout stations could display the finished craft on top for easy collection of craft, or there could be a "Get Items" or "Receive All" elsewhere to avoid unecessary scrolling. This is uncessary if ongoing crafts are moved on top of the list, or if the list is autoscrolled to the ongoing craft.
"Collect All" on station level is not the best idea. If you go in a station, it's probably better that you know what you're collecting. I suggest moving the relevant craft on top or auto scrolling and not adding "receive all" on station level, although it would be a good help.
This should be investigated.

Receive All or Get Items could be moved or added at the top or bottom of the window.

5. "Receive All" could exist at hideout level

The same way we "receive all" from a trader, it would be nice to "Receive all" from the hideout. Either in the form of a trader (in which we can receive all / pick manually from) or by instantly putting it in inventory. If there is enough space it just works. If there isn't, it displays an error like it already does.
This is not mutually exclusive with the previous suggestion.

6. Display crafts readyness/collection

6.1 Hideout
The current behaviour is partially coherent. You get notified when an item is sold, and you get notified when a craft is finished.
You have a display notification "Attachment" style when a trader has something for you, and you should get a display notification "attachment" style when the hideout has something for you.
Ideally, there should also be such notifications for currently unused station


Receive all on the right, Nutrition unit has finished crafting and Lavatory is currently NOT crafting

6.2 Traders
There should be a way of knowing if something is waiting in trader inventory on a global level (quest rewards, money, insurance, unsold market items returns), like the nofication. The "new item" notification could be always visible as long as items are in the trader inventories, compared to now where it disappears as soon as you either click it or visit the messenger. In this hypothesis, there could be a change of color in the notification to show that there are still item waiting including some that haven't been seen yet (to still fulfill the current role of the notification)

7. CTA's

Note : CTA = Call to Action, it's the button your user will press 99.3% of the time. Example, in the launcher, it's the "Start Game". Clearly visible, easily accessible, highlighted, much bigger, and at a very common CTA spot. That one is great.
Some others are not.
7.1. "Receive All" should not be displayed when there is nothing to receive.
7.2 "Get" in single transaction messages from Ragman could be removed. There is no reason to take single items from the window when you can receive it all at once.
7.3 A "group collect" Receive all action could be added when you click on the attachment notification, or as an extra action next to the notification (just like shown on the Hideout in figure 6.0) that would specifically collect all. it would loop through all conversations and collect all and dump at the top of stash, either until its finished or there is not enough room, in which case it displays an error. It could also work like the scav case and not pick up anything until you have room, and in that case you would go in the window manually and/or make room (like we do now).
7.3 The "Receive all" is at the bottom when most CTAs in the game is at the top (dealer tabs, market tabs, character sheet tabs, settings...). Save in the settings is at the bottom too. It is incoherent. It would make more sense to have all CTAs at the bottom and options/tabs/menus at the top.
7.4 The "DEAL" button in trader view is much smaller and less visible than the "Fill Item" checkbox. The CTA should be getting more attention than a setting. New players pretty much *never* see it first and look around the "Fill Item" with eyes & mouse.

DEAL should be at the bottom in the current \"Fill Item\" box. Fill Items should be removed entirely.
7.5 Quests could be automatically accepted (no need for CTA). I don't see a reason why someone would not accept a quest. The only reason we're Accepting them now is to let the user know he has a new quest. There are other means of notifying players of new stuff : usually notifications. If not, that button should at least be more visible/highlighted. Every new player ( 100%! ) I coach does not see it at first and never looks at the right spot the first time.
7.6 "Insure All" is the most commonly used button in the insurance screen and could be emphasized more.

Example 7.5

8. Remove "Fill Items"

The Fill Items to automatically fill the trader's requirements should be removed and set as the default behaviour. There is no need to fill items manually nor tell the game to do so.

9. Expire / Delete pending requests

Friend requests should be cancellable and could expire. Requests should not be stuck until another user acts on them. Right clicking the request could display a "Cancel" or "Delete" request button.
Ideally, the cell should include a CTA on the right, as the only action I would ever do in a cell in this context is cancel.
Opening a submenu with only 1 item means you should not be opening a submenu, but displaying a button where the user right clicked instead.

I can only re-send a friend request to someone that already denied me. This is incoherent.

10. Market Rows

From my somewhat small sample (about 60 players), nobody uses the expand button on the top right of a cell (see below). I think everybody uses the right click on item instead.

An expanded cell with context menu opened, and a collapsed cell
The extra information available on the right is the exact same as a right click, but is hidden behind a left click. This is incoherent.
The only difference is the profile picture that I only get from expanding, but currently we all have the same one. This would need to be investigated.

This could be an improvement, displaying the CTA's immediately (although BUY is definitely way too small). Notice profile picture on the left
10.1 The expandable cell feature should be removed altogether, as the other options are available on right click.
10.2 The whole row should provide the same context menu (right click).
10.3 The "Send friend request" could be included in the row's context menu, or could be removed entirely, as right now most requests are missclicks. Adding the Send Friend Request at the bottom of the context menu on the row would reduce the amount of missclicks.
10.4 Left clicking should not open the context menu. This is mostly the reason behind missclick friend requests, people double clicking slightly off the item icon sending a friend request by mistake. Now I have 4 just because I was trying to make a screenshot. F's in the chat. This would be resolved with 10.2 and 10.3.
10.5 Barter items have a "Barter" icon that is redundant, the first and second column are completely irrelevant to the player.

Example 10.5

11. Filtering search

11.1 "Filter by Item" should not filter the browse list. If you're writing a valid keyword in the search field it should display the correct suggestions. Filtering content is good, filtering suggestions is incoherent.
11.2 Filters could be cleared as soon as you type text in the search field. This would resolve 11.1

Example 11
11.3 "My Offers" could not be affected by filters, or could reset filters. It is more trouble to remove the filter manually every time rather than browsing through the offer list. Currently we never have more than ~10 offers at the same time for most players, which is okay to display without filter.
11.4 Filters should not overlap with other UI elements, they could be resized to fit or the expandable filter list could include more elements so the visible ones fit.

Example 11.4
11.5 The Remember Selected Filter / Reset Filter is unclear. Looks great, feels weird, and should be investigated to be more useful.

12. Context Menu in player lobby


The current lobby with context menu open

All players in this list are looking for a group, there is no need to write a status "Looking for group", it's redundant. The exception is friends, which 99.633...% of the time is the group i'm about to play with. Those are displayed on top.
The only action we do on the list on this screen is the "Invite to group" context menu action. It's a CTA and should not be hidden in a context menu, especially if the context menu only has one option. Since recently it has two, but we'll come to that in a minute.
12.1 The invite CTA should be on the player cell itself.
12.2 The report action should not be the default one from the context menu
12.3 Since there could be only one item in the context menu according to 12.1, the report action could be on the cell as well.

A low quality suggestion for 12.x

13. Trader Buy/Sell

Trader screen needs to be reworked. I won't provide a solution that doesn't completely change how everything looks/works as I stated at the start of the post. That being said this should be improved.


Example 13.1
13.1 Buying UI should be reworked.
When buying, the price of the item is already displayed on the item itself in the trader view.
The price is also displayed a second time in the tooltip of the item if you mouse-over.
The price is also displayed a third time in the barter area on the right of the image (middle of the screen in game). This is redundant. I understand the item on the right is the physical item "Roubles" in a stack that is paid, like a barter, but it does not need to be displayed a third time.
13.2 Quantity limit (red box in the image) could be shown in the tooltip ; most of the time people will hit "DEAL" until they get an error insted of actually reading the red box.
13.3 The red box looks like an error even when at 0/x, this is not intuitive. Limited items can be listed in different ways that are not so invasive. We could add "out of X" at the right side of the quantity box.
13.4 Barter item prices (if we assume 13.1) would need to also displayed differently. This needs to be investigated
13.5 Selling UI should be reworked

Example 13.5

Currently selling an item still displays the full available items to BUY, this is incoherent. Especially from the "Sell" tab. The whole left side of the screen is wasted, and cannot be used.
13.6 Items on the left are not greyed out (even though I can't buy them), but items on the right are greyed out (because I can't sell them). This is incoherent.
13.7 Trader sell space should be infinite
13.8 Buy/Sell could be done in a single tab if the whole screen is reworked. There are different levels to this. An easy one I could think :
"Trade" Tab instead of "Buy". Displays the same as the current "BUY" tab. If you ctrl+click an item from your stash, it instantly sells without confirmation. The second tab would be a "Buyback" where you can see what you sold in the current trade session. If you leave the screen your buyback is reset and items cannot be recovered. Another way would be to keep buybacks for the last X items. You would need to pay what you received to get back. The item would not lose it's FiR status. This preleminary and simplistic rework has issues, notably that you have to know to right click to sell. One way to fix that would be to make right click sell to trader instead of control click, but that would definitely make missclicks the first few days (and buyback would be mandatory).
This could be investigated.
13.9 Currency exchange rates should be easily available in relevant areas (Peacekeeper, Therapist and flea market) for all currencies (Rouble, Euro, Dollar, Bitcoin)

14. Boxing

Items should be boxables and moved around. At least to be dropped in boxes, ideally to be moved around freely.
There is a limit of 20 images. 🤷‍♂
Example 14

15. Quest inventory

If you loot too many quest items in a raid, you can end up not being able to loot it. I assume this is by design and it is why you have limited quest item space.
The quest inventory could be infinite if it's not by design to be limited.
The quest inventory should be manageable. In my case i had a 1 slot item blocking me from taking the suitcase, I should have been allowed to move that 1 slot item to the top or to the right of my inventory, clearing a whole line and letting me take the case.
Quest items could be stored in backpack (and resized) ; since you lose them on death it's not relevant to the players looting you or you dying and that issue would be gone. Storing it in your stash would also prevent you from losing it by going in raid with it by mistake. Taking it in raid or giving it to trader would be a volontary action. It also makes much more sense that way as other quest items (that are also usable items) work that way.


Alright this ended up taking more time than my lunchbreak, and there is *much* more to write but for the time being I'll leave it at that and come tomorrow to add your suggestions or mine. See you in 24 hours.
submitted by SixOneZil to EscapefromTarkov [link] [comments]

[OWL WATCH] Waiting for "IOTA TIME" 20; Hans's re-defined directions for DLT

Disclaimer: This is my editing, so there could be some misunderstandings...
--------------------------------------------
wellwho오늘 오후 4:50
u/Ben Royce****how far is society2 from having something clickable powered by IOTA?
Ben Royce오늘 오후 4:51
demo of basic tech late sep/ early oct. MVP early 2021
---------------------------------------------------
HusQy
Colored coins are the most misunderstood upcoming feature of the IOTA protocol. A lot of people see them just as a competitor to ERC-20 tokens on ETH and therefore a way of tokenizing things on IOTA, but they are much more important because they enable "consensus on data".
Bob
All this stuff already works on neblio but decentralized and scaling to 3500 tps
HusQy
Neblio has 8 mb blocks with 30 seconds blocktime. This is a throughput of 8 mb / 30 seconds = 267 kb per second. Transactions are 401+ bytes which means that throughput is 267 kb / 401 bytes = 665 TPS. IOTA is faster, feeless and will get even faster with the next update ...
-----------------------------------------------------------------------------
HusQy
Which DLT would be more secure? One that is collaboratively validated by the economic actors of the world (coporations, companies, foundations, states, people) or one that is validated by an anonymous group of wealthy crypto holders?
HusQy
The problem with current DLTs is that we use protection mechanisms like Proof of Work and Proof of Stake that are inherently hard to shard. The more shards you have, the more you have to distribute your hashing power and your stake and the less secure the system becomes.
HusQy
Real world identities (i.e. all the big economic actors) however could shard into as many shards as necessary without making the system less secure. Todays DLTs waste trust in the same way as PoW wastes energy.
HusQy
Is a secure money worth anything if you can't trust the economic actors that you would buy stuff from? If you buy a car from Volkswagen and they just beat you up and throw you out of the shop after you payed then a secure money won't be useful either :P
HusQy
**I believe that if you want to make DLT work and be successful then we need to ultimately incorporate things like trust in entities into the technology.**Examples likes wirecard show that trusting a single company is problematic but trusting the economy as a whole should be at ...
**... least as secure as todays DLTs.**And as soon as you add sharding it will be orders of magnitude more secure. DLT has failed to deliver because people have tried to build a system in vacuum that completely ignores things that already exist and that you can leverage on.
----------------------------------------------------------------------------------
HusQy
Blockchain is a bit like people sitting in a room, trying to communicate through BINGO sheets. While they talk, they write down some of the things that have been said and as soon as one screams BINGO! he hands around his sheet to inform everybody about what has been said.
HusQy
If you think that this is the most efficient form of communication for people sitting in the same room and the answer to scalability is to make bigger BINGO sheets or to allow people to solve the puzzle faster then you will most probably never understand what IOTA is working on.
--------------------------------------------------------------------------------
HusQy
**Blockchain does not work with too many equally weighted validators.****If 400 validators produce a validating statement (block) at the same time then only one can survive as part of a longest chain.**IOTA is all about collaborative validation.
**Another problem of blockchain is that every transaction gets sent twice through the network. Once from the nodes to the miners and a 2nd time from the miners as part of a block.**Blockchain will therefore always only be able to use 50% of the network throughput.
And****the last problem is that you can not arbitrarily decrease the time between blocks as it breaks down if the time between blocks gets smaller than the average network delay. The idle time between blocks is precious time that could be used for processing transactions.
-----------------------------------------------------------------------------
HusQy
I am not talking about a system with a fixed number of validators but one that is completely open and permissionless where any new company can just spin up a node and take part in the network.
------------------------------------------------------------------------
HusQy
Proof of Work and Proof of Stake are both centralizing sybil-protection mechanism. I don't think that Satoshi wanted 14 mining pools to run the network.
And "economic clustering" was always the "end game" of IOTA.
-----------------------------------------------------------------------------
HusQy
**Using Proof of Stake is not trustless. Proof of Stake means you trust the richest people and hope that they approve your transactions. The rich are getting richer (through your fees) and you are getting more and more dependant on them.**Is that your vision of the future?
----------------------------------------------------------------------------

HusQy
Please read again exactly what I wrote. I have not spoken of introducing governance by large companies, nor have I said that IOTA should be permissioned. We aim for a network with millions or even billions of nodes.

HusQy
That can't work at all with a permissioned ledger - who should then drop off all these devices or authorize them to participate in the network? My key message was the following: Proof of Work and Proof of Stake will always be if you split them up via sharding ...

HusQy
... less secure because you simply need fewer coins or less hash power to have the majority of the votes in a shard. This is not the case with trust in society and the economy. When all companies in the world jointly secure a DLT ...

HusQy
... then these companies could install any number of servers in any number of shards without compromising security, because "trust" does not become less just because they operate several servers. First of all, that is a fact and nothing else.

HusQy
Proof of Work and Proof of Stake are contrary to the assumption of many not "trustless" but follow the maxim: "In the greed of miners we trust!" The basic assumption that the miners do not destroy the system that generates income for them is fundamental here for the ...

HusQy
... security of every DLT. I think a similar assumption would still be correct for the economy as a whole: The companies of the world (and not just the big ones) would not destroy the system with which their customers pay them. In this respect, a system would be ...

HusQy
... which is validated by society and the economy as a whole probably just as "safely" as a system which is validated by a few anonymous miners. Why a small elite of miners should be better validators than any human and ...

HusQy
... To be honest, companies in this world do not open up to me. As already written in my other thread, safe money does not bring you anything if you have to assume that Volkswagen will beat you up and throw you out of the store after you ...

HusQy
... paid for a car. The thoughts I discussed say nothing about the immediate future of IOTA (we use for Coordicide mana) but rather speak of a world where DLT has already become an integral part of our lives and we ...

HusQy
... a corresponding number of companies, non-profit organizations and people have used DLT and where such a system could be implemented. The point here is not to create a governance solution that in any way influences the development of technology ...

HusQy
... or have to give nodes their OK first, but about developing a system that enables people to freely choose the validators they trust. For example, you can also declare your grandma to be a validator when you install your node or your ...

HusQy
... local supermarket. Economic relationships in the real world usually form a close-knit network and it doesn't really matter who you follow as long as the majority is honest. I also don't understand your criticism of censorship, because something like that in IOTA ...

HusQy
... is almost impossible. Each transaction confirms two other transactions which is growing exponentially. If someone wanted to ignore a transaction, he would have to ignore an exponential number of other transactions after a very short time. In contrast to blockchain ...

HusQy
... validators in IOTA do not decide what is included in the ledger, but only decide which of several double spends should be confirmed. Honest transactions are confirmed simply by having other transactions reference them ...

HusQy
... and the "validators" are not even asked. As for the "dust problem", this is indeed something that is a bigger problem for IOTA than for other DLTs because we have no fees, but it is also not an unsolvable problem. Bitcoin initially has a ...

HusQy
Solved similar problem by declaring outputs with a minimum amount of 5430 satoshis as invalid ( github.com/Bitcoin/Bitcoi…). A similar solution where an address must contain a minimum amount is also conceivable for IOTA and we are discussing ...

HusQy
... several possibilities (including compressing dust using cryptographic methods). Contrary to your assumption, checking such a minimum amount is not slow but just as fast as checking a normal transaction. And mine ...

HusQy
... In my opinion this is no problem at all for IOTA's use case. The important thing is that you can send small amounts, but after IOTA is feeless it is also okay to expect the recipients to regularly send their payments on a ...

HusQy
... merge address. The wallets already do this automatically (sweeping) and for machines it is no problem to automate this process. So far this was not a problem because the TPS were limited but with the increased TPS throughput of ...

HusQy
... Chrysalis it becomes relevant and appropriate solutions are discussed and then implemented accordingly. I think that was the most important thing first and if you have further questions just write :)

HusQy
And to be very clear! I really appreciate you and your questions and don't see this as an attack at all! People who see such questions as inappropriate criticism should really ask whether they are still objective. I have little time at the moment because ...

HusQy
... my girlfriend is on tour and has to take care of our daughter, but as soon as she is back we can discuss these things in a video. I think that the concept of including the "real world" in the concepts of DLT is really exciting and ...

HusQy
... that would certainly be exciting to discuss in a joint video. But again, that's more of a vision than a specific plan for the immediate future. This would not work with blockchain anyway but IOTA would be compatible so why not think about such things.
-----------------------------------------------------------------------

HusQy
All good my big one :P But actually not that much has changed. There has always been the concept of "economic clustering" which is basically based on similar ideas. We are just now able to implement things like this for the first time.
----------------------------------------------------------------------------------

HusQy
Exactly. It would mean that addresses "cost" something but I would rather pay a few cents than fees for each transaction. And you can "take" this minimum amount with you every time you change to a new address.

HusQy
All good my big one :P But actually not that much has changed. There has always been the concept of "economic clustering" which is basically based on similar ideas. We are just now able to implement things like this for the first time.
-----------------------------------------------------------------------------------

Relax오늘 오전 1:17
Btw. Hans (sorry for interrupting this convo) but what make people say that IOTA is going the permissioned way because of your latest tweets? I don't get why some people are now forecasting that... Is it because of missing specs or do they just don't get the whole idea?

Hans Moog [IF]오늘 오전 1:20
its bullshit u/Relaxan identity based system would still be open and permissionless where everybody can choose the actors that they deem trustworthy themselves but thats anyway just sth that would be applicable with more adoption
[오전 1:20]
for now we use mana as a predecessor to an actual reputation system

Sissors오늘 오전 1:31
If everybody has to choose actors they deem trustworthy, is it still permissionless? Probably will become a bit a semantic discussion, but still

Hans Moog [IF]오늘 오전 1:34
Of course its permissionless you can follow your grandma if you want to :p

Sissors오늘 오전 1:36
Well sure you can, but you will need to follow something which has a majority of the voting power in the network. Nice that you follow your grandma, but if others dont, her opinion (or well her nodes opinion) is completely irrelevant

Hans Moog [IF]오늘 오전 1:37
You would ideally follow the people that are trustworthy rather than your local drug dealers yeah

Sissors오늘 오전 1:38
And tbh, sure if you do it like that is easy. If you just make the users responsible for only connection to trustworthy nodes

Hans Moog [IF]오늘 오전 1:38
And if your grandma follows her supermarket and some other people she deems trustworthy then thats fine as well
[오전 1:38]
+ you dont have just 1 actor that you follow

Sissors오늘 오전 1:38
No, you got a large list, since yo uwant to follow those which actually matter. So you jsut download a standard list from the internet

Hans Moog [IF]오늘 오전 1:39
You can do that
[오전 1:39]
Is bitcoin permissionless? Should we both try to become miners?
[오전 1:41]
I mean miners that actually matter and not find a block every 10 trillion years 📷
[오전 1:42]
If you would want to become a validator then you would need to build up trust among other people - but anybody can still run a node and issue transactions unlike in hashgraph where you are not able to run your own nodes(수정됨)
[오전 1:48]
Proof of Stake is also not trustless - it just has a builtin mechanism that downloads the trusted people from the blockchain itself (the richest dudes)

Sissors오늘 오전 1:52
I think most agree it would be perfect if every person had one vote. Which is pr oblematic to implement of course. But I really wonder if the solution is to just let users decide who to trust. At the very least I expect a quite centralized network

Hans Moog [IF]오늘 오전 1:53
of course even a trust based system would to a certain degree be centralized as not every person is equally trustworthy as for example a big cooperation
[오전 1:53]
but I think its gonna be less centralized than PoS or PoW
[오전 1:53]
but anyway its sth for "after coordicide"
[오전 1:54]
there are not enough trusted entities that are using DLT, yet to make such a system work reasonably well
[오전 1:54]
I think the reason why blockchain has not really started to look into these kind of concepts is because blockchain doesnt work with too many equally weighted validators
[오전 1:56]
I believe that DLT is only going to take over the world if it is actually "better" than existing systems and with better I mean cheaper, more secure and faster and PoS and PoW will have a very hard time to deliver that
[오전 1:56]
especially if you consider that its not only going to settle value transfers

Relax오늘 오전 1:57
I like this clear statements, it makes it really clear that DLT is still in its infancy

Hans Moog [IF]오늘 오전 1:57
currently bank transfers are order of magnitude cheaper than BTC or ETH transactions

Hans Moog [IF]오늘 오전 1:57
and we you think that people will adopt it just because its crypto then I think we are mistaken
[오전 1:57]
The tech needs to actually solve a problem
[오전 1:57]
and tbh. currently people use PayPal and other companies to settle their payments
[오전 1:58]
having a group of the top 500 companies run such a service together is already much better(수정됨)
[오전 1:58]
especially if its fast and feeless
[오전 2:02]
and the more people use it, the more decentralized it actually becomes
[오전 2:02]
because you have more trustworthy entities to choose of

Evaldas [IF]오늘 오전 2:08
"in the greed of miners we trust"


submitted by btlkhs to Iota [link] [comments]

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.
  1. else if's and lack any sort of refactoring in general
The most «memey» one. I won't talk about the performance though (switch statement is not better in terms of performance, it is a myth. If compiler detects some code that can be turned into a jump table, for example, it will do it, no matter if it is a chain of if's or a switch statement. Compilers nowadays are way smarter than one might think). Just take a look here. I know that it's his older JavaScript code, but, believe it or not, this piece is still present in C# version relatively untouched.
I refactored this code for you using C language (mixed with C++ since there's no this pointer in pure C). Take a note that else if's are still there, else if's are not the problem by itself.
The refactored code is just objectively better for one simple reason: it is shorter, while not being obscure, and now it should be able to handle, say, Trespassing and Blood case without any input from the developer due to the usage of flags. Basically, the shorter your code, the more you can see on screen without spreading your attention too much. As a rule of thumb, the less lines there are, the easier it is for you to work with the code. Just don't overkill that, unless you are going to participate in International Obfuscated C Code Contest. Let me reiterate:
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.
  1. Comments
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.
  1. Unit testing
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.
  1. Static code analysis
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.
  1. Code architecture
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.
  1. Loading times
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:
  1. Fix the code (unavoidable time loss)
  2. Rebuild the project (can take a loooong time)
  3. Load your game (can take a loooong time)
  4. 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.
  1. Jenkins
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.
  1. 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.
  1. Go outside
Enough said. Your brain works slower if you only think about games and if you can't provide it with enough oxygen supply. I know that this one is probably the hardest to implement, but…
That's all, folks.
Bonus: Do you think how short this list would have been if someone just simply listened to Mike Zaimont instead of breaking down in tears?
submitted by Dezhitse to Osana [link] [comments]

Fanboyism, maximalism, interoperabilty, working with others and division of time transcript

Hi everybody, this is Charles Hoskinson broadcasting live from warm sunny Colorado.
I wanted to make a video about division of time. I've been recently making a lot of commentary on the ETC ecosystem. I've also reached out to other ecosystems like the Bitcoin Cash ecosystem, the Litecoin ecosystem for a variety of reasons and I noticed that there are some people in the comments and then telegram and twitter and other places say "oh no" focus 100% of your effort on Cardano! Why are you talking to ETC, why are you doing this and doing that?
So first off I run a big company. I we have over 250 people. About half of those people wake up every day and they're involved in Cardano. The other half are not so. As the CEO of a company where you have that kind of division there's non-Cardano things I do. Cardano's our largest project, we're heavily involved in it and obviously we wake up every day and we want Cardano to be successful and have billions of users and this is why we are following the process we're following. We're building the technology we're building. It's why we work very hard trying to commercialize it.
Every deal we do in Africa, every deal we do in eastern Europe, every deal we do in Asia, we have a Cardano first policy of deploying those deals on that platform and we built that platform to service those deals and as that platform evolves you'll see more use and utility from our sales channels in that respect. That said, one of the pillars of a third generation cryptocurrency is interoperability. It's kind of a silly thing to be a maximalist but then also talk about interoperability. What the hell is the point that? Either you want one chain to rule them all and therefore you don't care at all about talking to other systems or you put your money where your mouth is and you work on those other systems. You build expertise in those systems, you affect changes in those systems so that those systems can partner with our systems and work with our systems.
You know the Samsung CEO? He has a division that every day gets up and works with Apple and they work on the motherboards of the iPhone and build memory for them. Do all kinds of cool things and Samsung's division knows what the iPhone is going to look like before any of us knows. At the same time, there's another division at Samsung that wakes up every day and works on phones like the Galaxy to compete with the iPhone. Great companies have the capacity to do these things and we are a great company in that respect we have different and dedicated teams for different products and projects.
Now, we will never work on overlapping systems. It's not the case that we're going to have developers go and work on Cardano and something that's a direct competitor of Cardano because it makes no competitive sense for that to happen and I do not view ETC as a competitor of Cardano. It's a proof-of-work system, not a proof-of-stake system. It's a code-is-law system, not a world-financial operating system. It's a system that will always have a smaller group of people in it and always have a smaller set of things to do so time spent there with a completely separate team has no bearing or impact on our ability to deliver things with Cardano.
I can't accelerate things above and beyond what the teams can do, for example, today. I'm waiting for Daedalus flight to come out. There is nothing I can do. I can't pick up the phone and call the engineers and say can you ship it 15 minutes faster. The plan, it's been set, the release manager is there, the QA, team's there, everybody knows what to do. There's consensus amongst that team. They're going off to the mountain top, get it done and when it's done they'll let me know and then I'll tweet "new Daedalus is out guys" go play with it and it gives me some work to do of course but until they finish their job there's nothing to do in that respect. The Cardano plans we have are well set , we know exactly what we need to do. Those teams are working hard and I do everything in my power to accelerate things where and when it's safe to do so and everything in my power to get things done.
Shelley, for example. We worked so hard to get that out on July 29th, we had almost unlimited overtime. Everyone worked the weekend. Some people worked over 40 days straight to get that release done. Meanwhile half of the company was doing other things in other capacities and working on those projects. None of their work or the other cryptocurrencies we tend to work with had any bearing or impact on our ability to accelerate or decelerate the Shelley work stream. I just want to make sure everybody understands that and for people who have developed a maximalist mindset to get out of that maximalist mindset. There's a place for maximalism, it's called Bitcoin maximalism. If you live there, go there, okay and go believe in that project, in that chain but this is the Cardano ecosystem. It's going to literally work with hundreds if not thousands of different standards over its life. From central banks to other cryptocurrencies to legacy financial operators from the Chases of the world to the Goldman Sachs' of the world.
Provisions will be made to build special hooks for these systems including interoperability with permission systems. It's very likely in the next 24 months Cardano will be talking to an instance of Hyperledger Fabric from IBM. Very likely that that's going to happen. It's very likely that we'll consult on a project that does that and no way does this diminish the road map or somehow make Cardano less competitive. It's actually quite the opposite. The fact that we can work with those systems, the fact that we can do things with those systems means that the platform as a whole is intrinsically more valuable. It's easier to sell to Fortune 500 companies. It's easier to get use utility and adoption because people understand that they're not being led down the road of vendor lock-in and regressing back to the old days of internet explorer or what ConsenSys is trying to do with Ethereum, trying to lock everybody into one standard, one system, rather the value proposition we offer.
Is true interoperability the ability to move in and out? Furthermore, when you create partnerships with other ecosystems then their success is our success. For example, if the treasury system proposal succeeds in ETC they will be in the market for a permanent treasury system in 2021. We as a community can make the case that we've constructed with Voltaire is a great choice for them and of course we'll try to make that case and if it's successful we provide mutual value and benefit more volume and transactions and activity on the Cardano network, and for ETC they have a best-in-class treasury system that meets the values of that community. The exact same argument can be made for Litecoin, or for Bitcoin cash or for other systems and if you want to see the wrapped Litecoin video that I did earlier in the year it gives a great road map for a potential push there.
Furthermore, what if we turn Daedalus into a multi-currency wallet? That's already going to happen because we have a multi-asset standard and so when people issue tokens on Cardano Daedalus will support those tokens sometime in the future. It would be very easy for us to pull Ethereum classic and Litecoin and Bitcoin cash and other ecosystems into the Daedalus wallet. What does that mean? It means that people who live in that ecosystem will be using our technology as their day-to-day experience in hosting for their token! What does that mean if we have a DEX built into that thing? It potentially could create more adoption in use and utility for ada and this is the point we accomplish so much more working together than beating each other down.
I am damn tired of the cryptocurrency markets as they are. The fanboys, the trolls, the FUD, the maximalism, the relentless allegations that people you disagree with or hold different tokens are scammers or criminals or bad human beings. It's time we as an industry set this aside and grow up. Just grow up or else what's the point? Why would anybody looking from the outside at all of this chaos and noise and insanity and maximalism want to come play in this pool? It's like you're about to enter a bar and you see a bar fight. Do you keep going in or you turn around and walk away and say I don't want that trouble. I'm going to go down the street somewhere else that's safer and so how will we ever get mainstream adoption, how will we ever make the argument to governments that they should trust their elections, their property, perhaps even the money of their people on our systems if we're incapable of entertaining other ideas, other philosophies and other ecosystems? We don't deserve the right for that responsibility if we're not mature enough to have differences of opinion and be able to welcome other ecosystems into our own.
So this video is a call against maximalism first and foremost and second it's a realization that the duties of an executive officer are extensive meaning that there are days I wake up and there are Ethereum days and, by the way, working in that ecosystem gives me and my company exhaustive knowledge on how Ethereum works which allows me then to build a better product than they have and understand where all the bodies are buried: all the flaws in the protocols, the security issues, the performance issues, the smart contract development experience. That intimacy is extremely important to be able to predict, react and also plan a competitive strategy that can take you in a different and better direction.
You just don't live in a mono-culture. It's a bad deal, that's the second point. You have many projects. When you have a larger company, some of those projects are completely separate from each other. Some of those projects may have a bit of overlap. We have a philosophy that we don't work on competing products. For example we have done work with horizon (Horizon2020?) and as a consequence of doing work with them we're probably not going to work on zcash at the same time. As long as we have that relationship there we, for example, work on Cardano so we're not going to go work on another proof-of-stake system that wants to be a financial operating system. That would be a direct competitor. For example, Tezos would be happy to jointly author papers and coordinate collaboration but there needs to be a Cardano benefit in that relationship whereas ETC as I've mentioned is a totally different system and it's something that we have as a company historically worked on for years.
We started our participation in 2016. We built a full client in that process. Did that have any impact on our ability to deliver Cardano? We had a completely separate engineering team. That team was actually sourced from external companies. Scalac and Atix Labs to begin with and then we built on top of it and it had different product and project management and it was completely written with a different group. So it might as well have been a different company for that matter and I just talked to the team but the Cardano team was doing its own thing so I I think we need to just cut it out. Cut out the maximalism, cut out this idea that there is only one truth. We live in a nuanced world and we live in a world of interoperability. We have to embrace that if we wish to be successful and let us be the adults in the room. Let's be the place where this isn't the bar fight and let's be the place that welcomes everybody.
Furthermore, I've noticed some criticism from my own community. When people criticize us and they go to the politics of destruction or personal attacks or yield on criticizing people's intelligence or whatever have you... Cut that out too. Let's be a better community. I repeatedly call upon the Tezos foundation to tell its community to stop criticizing Cardano and calling it's "a scam project". So, I'll call upon my own community, I have seen things that shouldn't have happened. Certain members of Cardano community replying to people over twitter, replying to people who criticize us have resorted to personal attacks and so forth. Again, just ignore them , mute, let's embrace unity, let's embrace being better, yes, occasionally you got to kick people in the teeth especially when people are lying and what you do is you call them out on the lies that they've made. You specifically point out where they have done things that are a bit crazy or disingenuous and dishonest.
For example, we had a meeting today with Ethereum classic and it was blatantly apparent to me that this process has been set up to fail and be exclusive and prevent alternative ideas from a certain power structure from being held. So, I made a 30-minute whiteboard video where I not only called it out but I proposed an alternative and said this is how we're going to transcend that process and get to a much more productive way of doing things. Some of the criticism we have is justified because of product delays or because people don't fully understand who we are and what we're trying to do and obviously there's history there. So, first and foremost, let's reply with facts. First and foremost let's reply with dignity and respect and empathy for the other person's position and you know what? If they continue to push forward then you kick him in the teeth and you say it's obvious you don't want to have a conversation. You're a troll, but to my community please do this and please have this level of respect and dignity with others and with each other.
For example, we right now have a lot of debates with small stake pools versus large stake pools, there's plenty of people floating around with differences of opinion and our mantra should always be disagree without being disagreeable. People are going to have other values people, are gonna have differences of opinion and people are gonna have different perspectives. You can't change that reality nor should you. We all have the right to think and have differences of opinion but we also should expect a dialog that's fair and has empathy in it and so I call upon everybody to preserve that decorum as we move forward and also understand that some days we wake up we have to do things that are non-Cardano related in order for us all to be successful because not all the world will ever be Cardano related. We always need partners whether it be great pieces of hardware like Ledger and Trezor or exchanges to work with different wallets and sometimes those partners do stuff with us and sometimes those partners do things with other people. We have friends, we have projects we admire and respect.
For example, I've expressed repeatedly great admiration for the Algorand project. I think they're doing a phenomenal job and they have great leadership with Silvio Micali. I think the research and the engineering there is top notch. I personally believe Cardano is better. That's because we built it and that's because we think we have a better strategy to market and ultimately the market's going to decide which standards to go with and whether it's going to be many standards or a consolidation. That's not my decision. I just have to wake up every day and fight for the things I believe in. That said, never once have we ever criticized Algorand because they are in essence the model of empathy and dignity and good communication and being very proactive at focusing on solutions when they make announcements. They make announcements about new things that they're doing and new partners that they have and never once have they ever criticized another project or engaged in fanboyism. That's a great community, that's a great project and it's a model for where the space should go and I admire that deeply and greatly especially when you contrast it with other projects that have been less empathetic in their history.
We all have our problems, we all have our issues. I know that we all can be better and so that's my final point. Let's do that. Let's be better as an industry. Let's be a bit friendlier and let's invest the time and effort necessary to really understand and listen to each other because ultimately I think that's going to get us where we need to go and be able to get us to a point where we have that adoption of millions and billions of people and fundamentally change the fabric of society.
Otherwise we will be victims of our own success and descend into tribalism and descend into sectarian violence and then ultimately destroy the entire industry because it will become co-opted by large companies who use a surface-level marketing to take the brand, take the notion of a blockchain but then install centralized authorities behind them and in which case we've lost. I don't want that to happen I want the movement to succeed. I want us to understand each other and I enjoy having great competitors sometimes working with them sometimes fighting them in the battle of the markets, in the markets of ideas and ultimately I think we as a community have a chance to also be a model for everyone else.
So, let's do that. Thank you...
Video: https://www.youtube.com/watch?v=RXQrm18XhQ8
submitted by stake_pool to cardano [link] [comments]

[ Bitcoin ] Technical: Taproot: Why Activate?

Topic originally posted in Bitcoin by almkglor [link]
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.
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:
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 private 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:
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.)

Quantum Quibbles!

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.
So:
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).

Summary

I Wanna Be The Taprooter!

So, do you want to help activate Taproot? Here's what you, mister sovereign Bitcoin HODLer, can do!

But I Hate Taproot!!

That's fine!

Discussions About Taproot Activation

almkglor your post has been copied because one or more comments in this topic have been removed. This copy will preserve unmoderated topic. If you would like to opt-out, please send a message using [this link].
[deleted comment]
[deleted comment]
[deleted comment]
submitted by anticensor_bot to u/anticensor_bot [link] [comments]

Hi! I'm the solo developer of a social media platform, new religious movement, and religious organization. I've been working on this since early 2019. I've only told a few dozen people about it and I'm looking for feedback. Please ask me anything. Thanks!

TLDR: I made this website. I think it's pretty innovative and helpful. https://churchofearth.org/

About the need for this post.

A lot of this text was originally to be posted to changemyview because I'm looking to be challenged on my assumptions here, and my approach. I checked with the mods there and I can't find a way not to post it as promotion (which would violate the subreddit rules). The I considered posting it in philosophy and IAmA and it was a similar answer. To be clear: I support their decisions to not allow this post. There's a lot of reasons to be concerned about someone running up and saying "Hey! Do you wanna hear about my religion?" and I have total respect for anyone who says "No."
I reached out to casualiama a few hours ago and haven't heard back. If they decide to lock or remove this I support their decision and will try another subreddit.
I welcome lots and lots of questions about this project, I believe this project will be helpful, but I am open to having my view about the viability of this project changed. This is a big weird thing and I've been focusing on it alone for long time. This work has probably had a big impact on my objectivity.
This didn't used to exist and maybe it doesn't need to. Or maybe it has some irredeemable flaw that I've failed to consider. I don't want to see this get launched if that's the case. The main cost of this project has been my time, and I've learned enough while doing it to justify the time spent on it even if I'm convinced this project isn't viable.
I can't make any more progress alone and I need new people to get involved. This can change and it can evolve as it grows because I've tried to build it to be guided by new people. I hope that I've done a good job of building it that way.
The fastest way to learn about this in order to ask me questions is by visiting the website.
https://churchofearth.org/
(I sure hope that this post does well and I've set up the site well enough to accommodate the traffic.)
(This text will contain many links to the website)
(I'm really nervous about this)

Why have I done this?

I would describe this effort as coming out of the part of my brain that would be firing if I were an active survivalist/doomsday prepper. In 2019 I became very concerned about the state of the world, especially as I thought about what it will look like for the remainder of my life. It seemed logical to amass skills and resources in order to protect myself and the people around me. I had never focused on my own survival because I've lived a life of privilege, and then I realized that there were scenarios where my privilege would not protect me.
During that research phase I came to the conclusion that I couldn't just turn inward. As people turn inward our shared challenges become harder to address. I started looking more into the good work people were doing all over the world. I looked outward for inspiration.
There's lots of folks doing lots of amazing work trying to solve our shared challenges. At every level of society, in every region, in big ways and small ways. This is often a very helpful world.
I started researching things and became less pessimistic about the future of our world. This doesn't mean there aren't a pile of challenges for us to solve, it means that I'm better able to see the people trying to solve our shared challenges. When I couldn't see them (and wasn't looking for them) the future of our world seemed much worse. I still see the darkness, and it's scary and overwhelming and huge, but now I see more light.
This project represents what I was able to build with the skills and experience I had. This project started out as just a social media platform intended to connect people who wanted to help. While I was building that I discovered a faith within myself about the future. The new religious movement is the structure I've built to help grow this faith. It's based on religious humanism, which has been a thing for several hundred years.
I stopped working heavily on this project in late 2019, and formally stopped on February 1st of 2020. I started it up again in April of 2020. There's a short post about it here.

The new religious movement

The Church of Earth is a non-theistic, religious humanist movement focused on building a more helpful world and the worship of current and future generations. Worshiping future generations can allow us to focus deliberately on trying to build a world where everyone thrives.
In order to thrive we all need access to water, food, information, energy, support and freedom. We all need different level of these things to thrive and we all want to thrive. The Church of Earth is founded on the view that we are different and equal.
The core values of the Church of Earth are intended to help you and the world around you.
People who feel the faith of the Church of Earth are called Helpers. There are no rituals to join this faith, although anyone can make rituals. Anyone can identify themselves as a Helper. Don't judge them by who they say they are, judge them by what they do. In their acts of faith they should be trying to help you, and only if you consent to their help.
This faith is optional. No one can be forced to adopt this faith. You can't force a more helpful world on people, you can only help them build it.

The social media platform

The social media platform is built to help people grow this religion. It allows them to focus on activities that relate to the core beliefs of the Church of Earth. People do not need to share this faith to use this platform or use its features. The platform is anonymous. There are no user profiles. Every type of module can inspire almost any other type of module. The modules all have different functionality. This platform is complex software.
Social Media Platforms like Facebook and Twitter are designed to be simple and addictive. Those are deliberate design choices intended to serve the goals of the organizations that built them. These goals relate to revenue generation through the use of user data. This organization has different goals, and one of those goals involves promoting hard work.
There will be a learning curve with this platform. I'm the only one who has used it so far and I've probably failed to consider a lot of things. This platform will change over time as more skills and knowledge improve its construction. This platform can be considered one of our great works.
I can tell you right now people will find a number of bugs on the platform. I am expecting something unexpected, critical, and stressful to happen once people start visiting this site. Please be kind and patient with this platform, and with me. I'm very tired.
Upvotes/Downvites/Likes/Dislikes:
The purpose of this platform is to help grow a more helpful world. The upvote/downvote button labels are: This is Helpful and This is Not Helpful. Everything added to this platform should be helpful, every post includes fields where you can describe who you're trying to help, and why. There are a limited number of votes that can be given every day. Creating content increases your votes for the day.
The platform has the following modules:
The Gospel of the Church of Earth
All of the content we create can be connected in a big, anonymous web of helpfulness. Any content type can inspire any other content type, except for prayers. Prayers can only be answered (publicly or privately depending on the type of prayer.) Blog posts by the Church of Earth can inspire content from users. The goals of the Church of Earth appear in the same module as the goals of individual users of this platform.
Intentions
When you post something you have to say who you think you're helping, and why. You also need to select a subcategory like "I am being thoughtful" or "I am being creative" or "I am being inspirational" or "I am being critical". This will help other users understand how to react to you in a way that contributes to meaningful interactions.
It's just me right now, so that's pretty funny and awkward
The platform is live. Anyone can create content. Accounts can only create one piece of content until their first contribution receives a vote by another user saying "This is Helpful". There are currently no users on the platform. I've created content but there's no one to say if it's helpful so I'm still a pending user.
On September 24th, 1 year after I first posted the 3 core beliefs to the site, 5% of all pending users will be selected at random and added to the site. Those people will then be able to use the site, but their profiles will not indicate they were among the First Five. My account isn't any more likely to be added than anyone else.
This is an act of faith. It doesn't take a lot of people to make big things happen and we're all capable of amazing things. That is the message this platform has been designed to share.
Note: That doesn't mean there won't be an effort to understand the impact of spam comments, or content that violates the terms of service for this site. They'll be transparent though. It's unreasonable to think that people won't do silly things with a site like this on the internet. Silly things are fun. One of the "intentions" of the site is "the be creative".

The religious organization

This organization will have a different look depending on how successful it is. I've built it in the hope it will see a meaningful amount of adoption, but all of that can be scaled down and still be helpful. Even if it's just me feeling this way for the rest of my life I consider it a meaningful improvement to my worldview and personality.
I'm fairly confident some unknown quantity of other people will also see the value in this and that we can build something together.
The Church of Earth organization is the least planned out because it needs to be developed by people with greater specialization than me. The main points are this:
Here's an infographic about this.
The organization will be structured like a nonprofit and will prioritize pursuing goals that align with the 3 core beliefs of the Church of Earth faith. It will require donations, but the hope is that it will eventually develop revenue to be self sufficient.
I have some ideas for revenue generation. They're not super innovative, they're just taking relevant things and doing them in a way that promotes the faith of the Church of Earth as it operates as a nonprofit entity in a capitalist economy. This business model is well developed in North America by other religious institutions. These are the best ideas I've come up with, but none of them can proceed until I find people more qualified than me to do this. It's very likely that I've failed to consider elements of these proposals.

What should you know about me?

I wish I could be like Satoshi Nakamoto. That's the pseudonym of the person who created Bitcoin. We don't know for sure who actually created the code. They just worked on it, put it out there, and it went on to become something amazing and complex.
I spent a long time trying to figure out how to do that with the Church of Earth. I absolutely love everything about this project but I want to minimize my involvement in it. I also think there will be negative impacts on me, and this organization, if people focus on me instead of the faith. The Church of Earth is about what everyone can do, together. I'm no more special than anyone else. I'm terribly imperfect.
I'm also a 39 year old white Canadian guy. While I've faced many struggles I've lived a life of privilege. I don't speak for everyone, or to everyone. No one can. People face problems I couldn't even consider. My ability to help those people directly is limited, but I have the skillset required to build something that would allow others to help them.
The world is hard, and harsh, and frustrating, and scary. It's also wonderful and amazing and beautiful.
I think that if we all work together we can spend the rest of our lives deliberately building a better world for everyone, in big ways and small ways.
Knowing that's happening makes me happy and it motivates me to work harder. I wasn't a religious person until I discovered this faith within myself. This faith has allowed me to focus myself towards something that I believe is helpful to my community. I think it can do the same for others.
What do you think? Thanks for reading. Ask me anything, please.
submitted by ChurchOfEarth to casualiama [link] [comments]

How long does it take to put on your costume? - YouTube How To Mine 1 Bitcoin in 10 Minutes - Blockchain BTC Miner ... But how does bitcoin actually work? - YouTube How To Withdraw Bitcoin From Cash App To A Different ... How Long Does It Take for Sperm to Regenerate What to ...

Step 2: You will now choose what kind of Withdrawal Method you are going to use. Choose Withdraw to Bitcoin Wallet.There is no fee if you are going to withdraw 50,000+ 100,000 satoshi.. Step 3: Go to your Coins.ph account. In All Wallets, click BTC and click the QR code logo in the upper right corner of Bitcoin Wallet.. Step 4: You may now see your Bitcoin Wallet Address. BITCOIN has been alarming people for years because of the amount of electricity needed to mint new virtual coinage. Alex de Vries, a bitcoin specialist at PwC, estimates that the current global ... #1: Dividend paying stocks and other investments. The first passive income idea on this list does take some start-up cash, but it absolutely helps me earn more than $1,000 per month. With computing power exceeding the blockchain capabilities, it won’t be long before Bitcoin becomes obsolete. It’s unclear at this stage if another cryptocurrency using quantum computing would rise to take its place. The second risk to Bitcoin’s future comes in the form of financial fraud. How much hashrate does your mining rig generate How long does our mining rig run for One Block of Bitcoin gets mined every 10 minutes and since the competition is so high, the Block reward of 12.5 BTC gets distributed among the peers depending on their hashrate contribution to the process.

[index] [16067] [262] [1846] [45475] [5065] [17276] [28879] [79] [18279] [2045]

How long does it take to put on your costume? - YouTube

What it really takes to mine a Bitcoin in 10 Minutes. Firstly I'll show you a special free method to mine Bitcoin and send funds directly to your wallet in 1... How To Withdraw Bitcoin From Cash App To A Different Wallet __ Try Cash App using my code and we’ll each get $5! SFGQXGB https://cash.me/$AnthonyCashHere __ ... The math behind cryptocurrencies. Home page: https://www.3blue1brown.com/ Brought to you by you: http://3b1b.co/btc-thanks And by Protocol Labs: https://prot... Follow mOE at: ☻http://www.twitch.tv/m0e_tv ☻https://www.facebook.com/m0etv ☻https://twitter.com/m0E_tv ☻https://instagram.com/m0e_tv Intro By PubFX http... I've had a few people ask how long it takes. Here it is in real time. Start to finish. Thanks to ThorTV for the helping hand!

http://forex-turck.formula1.life