Nonce Definition - Investopedia

Bob The Magic Custodian



Summary: Everyone knows that when you give your assets to someone else, they always keep them safe. If this is true for individuals, it is certainly true for businesses.
Custodians always tell the truth and manage funds properly. They won't have any interest in taking the assets as an exchange operator would. Auditors tell the truth and can't be misled. That's because organizations that are regulated are incapable of lying and don't make mistakes.

First, some background. Here is a summary of how custodians make us more secure:

Previously, we might give Alice our crypto assets to hold. There were risks:

But "no worries", Alice has a custodian named Bob. Bob is dressed in a nice suit. He knows some politicians. And he drives a Porsche. "So you have nothing to worry about!". And look at all the benefits we get:
See - all problems are solved! All we have to worry about now is:
It's pretty simple. Before we had to trust Alice. Now we only have to trust Alice, Bob, and all the ways in which they communicate. Just think of how much more secure we are!

"On top of that", Bob assures us, "we're using a special wallet structure". Bob shows Alice a diagram. "We've broken the balance up and store it in lots of smaller wallets. That way", he assures her, "a thief can't take it all at once". And he points to a historic case where a large sum was taken "because it was stored in a single wallet... how stupid".
"Very early on, we used to have all the crypto in one wallet", he said, "and then one Christmas a hacker came and took it all. We call him the Grinch. Now we individually wrap each crypto and stick it under a binary search tree. The Grinch has never been back since."

"As well", Bob continues, "even if someone were to get in, we've got insurance. It covers all thefts and even coercion, collusion, and misplaced keys - only subject to the policy terms and conditions." And with that, he pulls out a phone-book sized contract and slams it on the desk with a thud. "Yep", he continues, "we're paying top dollar for one of the best policies in the country!"
"Can I read it?' Alice asks. "Sure," Bob says, "just as soon as our legal team is done with it. They're almost through the first chapter." He pauses, then continues. "And can you believe that sales guy Mike? He has the same year Porsche as me. I mean, what are the odds?"

"Do you use multi-sig?", Alice asks. "Absolutely!" Bob replies. "All our engineers are fully trained in multi-sig. Whenever we want to set up a new wallet, we generate 2 separate keys in an air-gapped process and store them in this proprietary system here. Look, it even requires the biometric signature from one of our team members to initiate any withdrawal." He demonstrates by pressing his thumb into the display. "We use a third-party cloud validation API to match the thumbprint and authorize each withdrawal. The keys are also backed up daily to an off-site third-party."
"Wow that's really impressive," Alice says, "but what if we need access for a withdrawal outside of office hours?" "Well that's no issue", Bob says, "just send us an email, call, or text message and we always have someone on staff to help out. Just another part of our strong commitment to all our customers!"

"What about Proof of Reserve?", Alice asks. "Of course", Bob replies, "though rather than publish any blockchain addresses or signed transaction, for privacy we just do a SHA256 refactoring of the inverse hash modulus for each UTXO nonce and combine the smart contract coefficient consensus in our hyperledger lightning node. But it's really simple to use." He pushes a button and a large green checkmark appears on a screen. "See - the algorithm ran through and reserves are proven."
"Wow", Alice says, "you really know your stuff! And that is easy to use! What about fiat balances?" "Yeah, we have an auditor too", Bob replies, "Been using him for a long time so we have quite a strong relationship going! We have special books we give him every year and he's very efficient! Checks the fiat, crypto, and everything all at once!"

"We used to have a nice offline multi-sig setup we've been using without issue for the past 5 years, but I think we'll move all our funds over to your facility," Alice says. "Awesome", Bob replies, "Thanks so much! This is perfect timing too - my Porsche got a dent on it this morning. We have the paperwork right over here." "Great!", Alice replies.
And with that, Alice gets out her pen and Bob gets the contract. "Don't worry", he says, "you can take your crypto-assets back anytime you like - just subject to our cancellation policy. Our annual management fees are also super low and we don't adjust them often".

How many holes have to exist for your funds to get stolen?
Just one.

Why are we taking a powerful offline multi-sig setup, widely used globally in hundreds of different/lacking regulatory environments with 0 breaches to date, and circumventing it by a demonstrably weak third party layer? And paying a great expense to do so?
If you go through the list of breaches in the past 2 years to highly credible organizations, you go through the list of major corporate frauds (only the ones we know about), you go through the list of all the times platforms have lost funds, you go through the list of times and ways that people have lost their crypto from identity theft, hot wallet exploits, extortion, etc... and then you go through this custodian with a fine-tooth comb and truly believe they have value to add far beyond what you could, sticking your funds in a wallet (or set of wallets) they control exclusively is the absolute worst possible way to take advantage of that security.

The best way to add security for crypto-assets is to make a stronger multi-sig. With one custodian, what you are doing is giving them your cryptocurrency and hoping they're honest, competent, and flawlessly secure. It's no different than storing it on a really secure exchange. Maybe the insurance will cover you. Didn't work for Bitpay in 2015. Didn't work for Yapizon in 2017. Insurance has never paid a claim in the entire history of cryptocurrency. But maybe you'll get lucky. Maybe your exact scenario will buck the trend and be what they're willing to cover. After the large deductible and hopefully without a long and expensive court battle.

And you want to advertise this increase in risk, the lapse of judgement, an accident waiting to happen, as though it's some kind of benefit to customers ("Free institutional-grade storage for your digital assets.")? And then some people are writing to the OSC that custodians should be mandatory for all funds on every exchange platform? That this somehow will make Canadians as a whole more secure or better protected compared with standard air-gapped multi-sig? On what planet?

Most of the problems in Canada stemmed from one thing - a lack of transparency. If Canadians had known what a joke Quadriga was - it wouldn't have grown to lose $400m from hard-working Canadians from coast to coast to coast. And Gerald Cotten would be in jail, not wherever he is now (at best, rotting peacefully). EZ-BTC and mister Dave Smilie would have been a tiny little scam to his friends, not a multi-million dollar fraud. Einstein would have got their act together or been shut down BEFORE losing millions and millions more in people's funds generously donated to criminals. MapleChange wouldn't have even been a thing. And maybe we'd know a little more about CoinTradeNewNote - like how much was lost in there. Almost all of the major losses with cryptocurrency exchanges involve deception with unbacked funds.
So it's great to see transparency reports from BitBuy and ShakePay where someone independently verified the backing. The only thing we don't have is:
It's not complicated to validate cryptocurrency assets. They need to exist, they need to be spendable, and they need to cover the total balances. There are plenty of credible people and firms across the country that have the capacity to reasonably perform this validation. Having more frequent checks by different, independent, parties who publish transparent reports is far more valuable than an annual check by a single "more credible/official" party who does the exact same basic checks and may or may not publish anything. Here's an example set of requirements that could be mandated:
There are ways to structure audits such that neither crypto assets nor customer information are ever put at risk, and both can still be properly validated and publicly verifiable. There are also ways to structure audits such that they are completely reasonable for small platforms and don't inhibit innovation in any way. By making the process as reasonable as possible, we can completely eliminate any reason/excuse that an honest platform would have for not being audited. That is arguable far more important than any incremental improvement we might get from mandating "the best of the best" accountants. Right now we have nothing mandated and tons of Canadians using offshore exchanges with no oversight whatsoever.

Transparency does not prove crypto assets are safe. CoinTradeNewNote, Flexcoin ($600k), and Canadian Bitcoins ($100k) are examples where crypto-assets were breached from platforms in Canada. All of them were online wallets and used no multi-sig as far as any records show. This is consistent with what we see globally - air-gapped multi-sig wallets have an impeccable record, while other schemes tend to suffer breach after breach. We don't actually know how much CoinTrader lost because there was no visibility. Rather than publishing details of what happened, the co-founder of CoinTrader silently moved on to found another platform - the "most trusted way to buy and sell crypto" - a site that has no information whatsoever (that I could find) on the storage practices and a FAQ advising that “[t]rading cryptocurrency is completely safe” and that having your own wallet is “entirely up to you! You can certainly keep cryptocurrency, or fiat, or both, on the app.” Doesn't sound like much was learned here, which is really sad to see.
It's not that complicated or unreasonable to set up a proper hardware wallet. Multi-sig can be learned in a single course. Something the equivalent complexity of a driver's license test could prevent all the cold storage exploits we've seen to date - even globally. Platform operators have a key advantage in detecting and preventing fraud - they know their customers far better than any custodian ever would. The best job that custodians can do is to find high integrity individuals and train them to form even better wallet signatories. Rather than mandating that all platforms expose themselves to arbitrary third party risks, regulations should center around ensuring that all signatories are background-checked, properly trained, and using proper procedures. We also need to make sure that signatories are empowered with rights and responsibilities to reject and report fraud. They need to know that they can safely challenge and delay a transaction - even if it turns out they made a mistake. We need to have an environment where mistakes are brought to the surface and dealt with. Not one where firms and people feel the need to hide what happened. In addition to a knowledge-based test, an auditor can privately interview each signatory to make sure they're not in coercive situations, and we should make sure they can freely and anonymously report any issues without threat of retaliation.
A proper multi-sig has each signature held by a separate person and is governed by policies and mutual decisions instead of a hierarchy. It includes at least one redundant signature. For best results, 3of4, 3of5, 3of6, 4of5, 4of6, 4of7, 5of6, or 5of7.

History has demonstrated over and over again the risk of hot wallets even to highly credible organizations. Nonetheless, many platforms have hot wallets for convenience. While such losses are generally compensated by platforms without issue (for example Poloniex, Bitstamp, Bitfinex, Gatecoin, Coincheck, Bithumb, Zaif, CoinBene, Binance, Bitrue, Bitpoint, Upbit, VinDAX, and now KuCoin), the public tends to focus more on cases that didn't end well. Regardless of what systems are employed, there is always some level of risk. For that reason, most members of the public would prefer to see third party insurance.
Rather than trying to convince third party profit-seekers to provide comprehensive insurance and then relying on an expensive and slow legal system to enforce against whatever legal loopholes they manage to find each and every time something goes wrong, insurance could be run through multiple exchange operators and regulators, with the shared interest of having a reputable industry, keeping costs down, and taking care of Canadians. For example, a 4 of 7 multi-sig insurance fund held between 5 independent exchange operators and 2 regulatory bodies. All Canadian exchanges could pay premiums at a set rate based on their needed coverage, with a higher price paid for hot wallet coverage (anything not an air-gapped multi-sig cold wallet). Such a model would be much cheaper to manage, offer better coverage, and be much more reliable to payout when needed. The kind of coverage you could have under this model is unheard of. You could even create something like the CDIC to protect Canadians who get their trading accounts hacked if they can sufficiently prove the loss is legitimate. In cases of fraud, gross negligence, or insolvency, the fund can be used to pay affected users directly (utilizing the last transparent balance report in the worst case), something which private insurance would never touch. While it's recommended to have official policies for coverage, a model where members vote would fully cover edge cases. (Could be similar to the Supreme Court where justices vote based on case law.)
Such a model could fully protect all Canadians across all platforms. You can have a fiat coverage governed by legal agreements, and crypto-asset coverage governed by both multi-sig and legal agreements. It could be practical, affordable, and inclusive.

Now, we are at a crossroads. We can happily give up our freedom, our innovation, and our money. We can pay hefty expenses to auditors, lawyers, and regulators year after year (and make no mistake - this cost will grow to many millions or even billions as the industry grows - and it will be borne by all Canadians on every platform because platforms are not going to eat up these costs at a loss). We can make it nearly impossible for any new platform to enter the marketplace, forcing Canadians to use the same stagnant platforms year after year. We can centralize and consolidate the entire industry into 2 or 3 big players and have everyone else fail (possibly to heavy losses of users of those platforms). And when a flawed security model doesn't work and gets breached, we can make it even more complicated with even more people in suits making big money doing the job that blockchain was supposed to do in the first place. We can build a system which is so intertwined and dependent on big government, traditional finance, and central bankers that it's future depends entirely on that of the fiat system, of fractional banking, and of government bail-outs. If we choose this path, as history has shown us over and over again, we can not go back, save for revolution. Our children and grandchildren will still be paying the consequences of what we decided today.
Or, we can find solutions that work. We can maintain an open and innovative environment while making the adjustments we need to make to fully protect Canadian investors and cryptocurrency users, giving easy and affordable access to cryptocurrency for all Canadians on the platform of their choice, and creating an environment in which entrepreneurs and problem solvers can bring those solutions forward easily. None of the above precludes innovation in any way, or adds any unreasonable cost - and these three policies would demonstrably eliminate or resolve all 109 historic cases as studied here - that's every single case researched so far going back to 2011. It includes every loss that was studied so far not just in Canada but globally as well.
Unfortunately, finding answers is the least challenging part. Far more challenging is to get platform operators and regulators to agree on anything. My last post got no response whatsoever, and while the OSC has told me they're happy for industry feedback, I believe my opinion alone is fairly meaningless. This takes the whole community working together to solve. So please let me know your thoughts. Please take the time to upvote and share this with people. Please - let's get this solved and not leave it up to other people to do.

Facts/background/sources (skip if you like):



Thoughts?
submitted by azoundria2 to QuadrigaInitiative [link] [comments]

Where is Bitcoin Going and When?

Where is Bitcoin Going and When?

The Federal Reserve and the United States government are pumping extreme amounts of money into the economy, already totaling over $484 billion. They are doing so because it already had a goal to inflate the United States Dollar (USD) so that the market can continue to all-time highs. It has always had this goal. They do not care how much inflation goes up by now as we are going into a depression with the potential to totally crash the US economy forever. They believe the only way to save the market from going to zero or negative values is to inflate it so much that it cannot possibly crash that low. Even if the market does not dip that low, inflation serves the interest of powerful people.
The impending crash of the stock market has ramifications for Bitcoin, as, though there is no direct ongoing-correlation between the two, major movements in traditional markets will necessarily affect Bitcoin. According to the Blockchain Center’s Cryptocurrency Correlation Tool, Bitcoin is not correlated with the stock market. However, when major market movements occur, they send ripples throughout the financial ecosystem which necessary affect even ordinarily uncorrelated assets.
Therefore, Bitcoin will reach X price on X date after crashing to a price of X by X date.

Stock Market Crash

The Federal Reserve has caused some serious consternation with their release of ridiculous amounts of money in an attempt to buoy the economy. At face value, it does not seem to have any rationale or logic behind it other than keeping the economy afloat long enough for individuals to profit financially and politically. However, there is an underlying basis to what is going on which is important to understand in order to profit financially.
All markets are functionally price probing systems. They constantly undergo a price-discovery process. In a fiat system, money is an illusory and a fundamentally synthetic instrument with no intrinsic value – similar to Bitcoin. The primary difference between Bitcoin is the underlying technology which provides a slew of benefits that fiat does not. Fiat, however, has an advantage in being able to have the support of powerful nation-states which can use their might to insure the currency’s prosperity.
Traditional stock markets are composed of indices (pl. of index). Indices are non-trading market instruments which are essentially summaries of business values which comprise them. They are continuously recalculated throughout a trading day, and sometimes reflected through tradable instruments such as Exchange Traded Funds or Futures. Indices are weighted by market capitalizations of various businesses.
Price theory essentially states that when a market fails to take out a new low in a given range, it will have an objective to take out the high. When a market fails to take out a new high, it has an objective to make a new low. This is why price-time charts go up and down, as it does this on a second-by-second, minute-by-minute, day-by-day, and even century-by-century basis. Therefore, market indices will always return to some type of bull market as, once a true low is formed, the market will have a price objective to take out a new high outside of its’ given range – which is an all-time high. Instruments can only functionally fall to zero, whereas they can grow infinitely.
So, why inflate the economy so much?
Deflation is disastrous for central banks and markets as it raises the possibility of producing an overall price objective of zero or negative values. Therefore, under a fractional reserve system with a fiat currency managed by a central bank – the goal of the central bank is to depreciate the currency. The dollar is manipulated constantly with the intention of depreciating its’ value.
Central banks have a goal of continued inflated fiat values. They tend to ordinarily contain it at less than ten percent (10%) per annum in order for the psyche of the general populace to slowly adjust price increases. As such, the markets are divorced from any other logic. Economic policy is the maintenance of human egos, not catering to fundamental analysis. Gross Domestic Product (GDP) growth is well-known not to be a measure of actual growth or output. It is a measure of increase in dollars processed. Banks seek to produce raising numbers which make society feel like it is growing economically, making people optimistic. To do so, the currency is inflated, though inflation itself does not actually increase growth. When society is optimistic, it spends and engages in business – resulting in actual growth. It also encourages people to take on credit and debts, creating more fictional fiat.
Inflation is necessary for markets to continue to reach new heights, generating positive emotional responses from the populace, encouraging spending, encouraging debt intake, further inflating the currency, and increasing the sale of government bonds. The fiat system only survives by generating more imaginary money on a regular basis.
Bitcoin investors may profit from this by realizing that stock investors as a whole always stand to profit from the market so long as it is managed by a central bank and does not collapse entirely. If those elements are filled, it has an unending price objective to raise to new heights. It also allows us to realize that this response indicates that the higher-ups believe that the economy could crash in entirety, and it may be wise for investors to have multiple well-thought-out exit strategies.

Economic Analysis of Bitcoin

The reason why the Fed is so aggressively inflating the economy is due to fears that it will collapse forever or never rebound. As such, coupled with a global depression, a huge demand will appear for a reserve currency which is fundamentally different than the previous system. Bitcoin, though a currency or asset, is also a market. It also undergoes a constant price-probing process. Unlike traditional markets, Bitcoin has the exact opposite goal. Bitcoin seeks to appreciate in value and not depreciate. This has a quite different affect in that Bitcoin could potentially become worthless and have a price objective of zero.
Bitcoin was created in 2008 by a now famous mysterious figure known as Satoshi Nakamoto and its’ open source code was released in 2009. It was the first decentralized cryptocurrency to utilize a novel protocol known as the blockchain. Up to one megabyte of data may be sent with each transaction. It is decentralized, anonymous, transparent, easy to set-up, and provides myriad other benefits. Bitcoin is not backed up by anything other than its’ own technology.
Bitcoin is can never be expected to collapse as a framework, even were it to become worthless. The stock market has the potential to collapse in entirety, whereas, as long as the internet exists, Bitcoin will be a functional system with a self-authenticating framework. That capacity to persist regardless of the actual price of Bitcoin and the deflationary nature of Bitcoin means that it has something which fiat does not – inherent value.
Bitcoin is based on a distributed database known as the “blockchain.” Blockchains are essentially decentralized virtual ledger books, replete with pages known as “blocks.” Each page in a ledger is composed of paragraph entries, which are the actual transactions in the block.
Blockchains store information in the form of numerical transactions, which are just numbers. We can consider these numbers digital assets, such as Bitcoin. The data in a blockchain is immutable and recorded only by consensus-based algorithms. Bitcoin is cryptographic and all transactions are direct, without intermediary, peer-to-peer.
Bitcoin does not require trust in a central bank. It requires trust on the technology behind it, which is open-source and may be evaluated by anyone at any time. Furthermore, it is impossible to manipulate as doing so would require all of the nodes in the network to be hacked at once – unlike the stock market which is manipulated by the government and “Market Makers”. Bitcoin is also private in that, though the ledge is openly distributed, it is encrypted. Bitcoin’s blockchain has one of the greatest redundancy and information disaster recovery systems ever developed.
Bitcoin has a distributed governance model in that it is controlled by its’ users. There is no need to trust a payment processor or bank, or even to pay fees to such entities. There are also no third-party fees for transaction processing. As the ledge is immutable and transparent it is never possible to change it – the data on the blockchain is permanent. The system is not easily susceptible to attacks as it is widely distributed. Furthermore, as users of Bitcoin have their private keys assigned to their transactions, they are virtually impossible to fake. No lengthy verification, reconciliation, nor clearing process exists with Bitcoin.
Bitcoin is based on a proof-of-work algorithm. Every transaction on the network has an associated mathetical “puzzle”. Computers known as miners compete to solve the complex cryptographic hash algorithm that comprises that puzzle. The solution is proof that the miner engaged in sufficient work. The puzzle is known as a nonce, a number used only once. There is only one major nonce at a time and it issues 12.5 Bitcoin. Once it is solved, the fact that the nonce has been solved is made public.
A block is mined on average of once every ten minutes. However, the blockchain checks every 2,016,000 minutes (approximately four years) if 201,600 blocks were mined. If it was faster, it increases difficulty by half, thereby deflating Bitcoin. If it was slower, it decreases, thereby inflating Bitcoin. It will continue to do this until zero Bitcoin are issued, projected at the year 2140. On the twelfth of May, 2020, the blockchain will halve the amount of Bitcoin issued when each nonce is guessed. When Bitcoin was first created, fifty were issued per block as a reward to miners. 6.25 BTC will be issued from that point on once each nonce is solved.
Unlike fiat, Bitcoin is a deflationary currency. As BTC becomes scarcer, demand for it will increase, also raising the price. In this, BTC is similar to gold. It is predictable in its’ output, unlike the USD, as it is based on a programmed supply. We can predict BTC’s deflation and inflation almost exactly, if not exactly. Only 21 million BTC will ever be produced, unless the entire network concedes to change the protocol – which is highly unlikely.
Some of the drawbacks to BTC include congestion. At peak congestion, it may take an entire day to process a Bitcoin transaction as only three to five transactions may be processed per second. Receiving priority on a payment may cost up to the equivalent of twenty dollars ($20). Bitcoin mining consumes enough energy in one day to power a single-family home for an entire week.

Trading or Investing?

The fundamental divide in trading revolves around the question of market structure. Many feel that the market operates totally randomly and its’ behavior cannot be predicted. For the purposes of this article, we will assume that the market has a structure, but that that structure is not perfect. That market structure naturally generates chart patterns as the market records prices in time. In order to determine when the stock market will crash, causing a major decline in BTC price, we will analyze an instrument, an exchange traded fund, which represents an index, as opposed to a particular stock. The price patterns of the various stocks in an index are effectively smoothed out. In doing so, a more technical picture arises. Perhaps the most popular of these is the SPDR S&P Standard and Poor 500 Exchange Traded Fund ($SPY).
In trading, little to no concern is given about value of underlying asset. We are concerned primarily about liquidity and trading ranges, which are the amount of value fluctuating on a short-term basis, as measured by volatility-implied trading ranges. Fundamental analysis plays a role, however markets often do not react to real-world factors in a logical fashion. Therefore, fundamental analysis is more appropriate for long-term investing.
The fundamental derivatives of a chart are time (x-axis) and price (y-axis). The primary technical indicator is price, as everything else is lagging in the past. Price represents current asking price and incorrectly implementing positions based on price is one of the biggest trading errors.
Markets and currencies ordinarily have noise, their tendency to back-and-fill, which must be filtered out for true pattern recognition. That noise does have a utility, however, in allowing traders second chances to enter favorable positions at slightly less favorable entry points. When you have any market with enough liquidity for historical data to record a pattern, then a structure can be divined. The market probes prices as part of an ongoing price-discovery process. Market technicians must sometimes look outside of the technical realm and use visual inspection to ascertain the relevance of certain patterns, using a qualitative eye that recognizes the underlying quantitative nature
Markets and instruments rise slower than they correct, however they rise much more than they fall. In the same vein, instruments can only fall to having no worth, whereas they could theoretically grow infinitely and have continued to grow over time. Money in a fiat system is illusory. It is a fundamentally synthetic instrument which has no intrinsic value. Hence, the recent seemingly illogical fluctuations in the market.
According to trade theory, the unending purpose of a market or instrument is to create and break price ranges according to the laws of supply and demand. We must determine when to trade based on each market inflection point as defined in price and in time as opposed to abandoning the trend (as the contrarian trading in this sub often does). Time and Price symmetry must be used to be in accordance with the trend. When coupled with a favorable risk to reward ratio, the ability to stay in the market for most of the defined time period, and adherence to risk management rules; the trader has a solid methodology for achieving considerable gains.
We will engage in a longer term market-oriented analysis to avoid any time-focused pressure. The Bitcoin market is open twenty-four-hours a day, so trading may be done when the individual is ready, without any pressing need to be constantly alert. Let alone, we can safely project months in advance with relatively high accuracy. Bitcoin is an asset which an individual can both trade and invest, however this article will be focused on trading due to the wide volatility in BTC prices over the short-term.

Technical Indicator Analysis of Bitcoin

Technical indicators are often considered self-fulfilling prophecies due to mass-market psychology gravitating towards certain common numbers yielded from them. They are also often discounted when it comes to BTC. That means a trader must be especially aware of these numbers as they can prognosticate market movements. Often, they are meaningless in the larger picture of things.
  • Volume – derived from the market itself, it is mostly irrelevant. The major problem with volume for stocks is that the US market open causes tremendous volume surges eradicating any intrinsic volume analysis. This does not occur with BTC, as it is open twenty-four-seven. At major highs and lows, the market is typically anemic. Most traders are not active at terminal discretes (peaks and troughs) because of levels of fear. Volume allows us confidence in time and price symmetry market inflection points, if we observe low volume at a foretold range of values. We can rationalize that an absolute discrete is usually only discovered and anticipated by very few traders. As the general market realizes it, a herd mentality will push the market in the direction favorable to defending it. Volume is also useful for swing trading, as chances for swing’s validity increases if an increase in volume is seen on and after the swing’s activation. Volume is steadily decreasing. Lows and highs are reached when volume is lower.
Therefore, due to the relatively high volume on the 12th of March, we can safely determine that a low for BTC was not reached.
  • VIX – Volatility Index, this technical indicator indicates level of fear by the amount of options-based “insurance” in portfolios. A low VIX environment, less than 20 for the S&P index, indicates a stable market with a possible uptrend. A high VIX, over 20, indicates a possible downtrend. VIX is essentially useless for BTC as BTC-based options do not exist. It allows us to predict the market low for $SPY, which will have an indirect impact on BTC in the short term, likely leading to the yearly low. However, it is equally important to see how VIX is changing over time, if it is decreasing or increasing, as that indicates increasing or decreasing fear. Low volatility allows high leverage without risk or rest. Occasionally, markets do rise with high VIX.
As VIX is unusually high, in the forties, we can be confident that a downtrend for the S&P 500 is imminent.
  • RSI (Relative Strength Index): The most important technical indicator, useful for determining highs and lows when time symmetry is not availing itself. Sometimes analysis of RSI can conflict in different time frames, easiest way to use it is when it is at extremes – either under 30 or over 70. Extremes can be used for filtering highs or lows based on time-and-price window calculations. Highly instructive as to major corrective clues and indicative of continued directional movement. Must determine if longer-term RSI values find support at same values as before. It is currently at 73.56.
  • Secondly, RSI may be used as a high or low filter, to observe the level that short-term RSI reaches in counter-trend corrections. Repetitions based on market movements based on RSI determine how long a trade should be held onto. Once a short term RSI reaches an extreme and stay there, the other RSI’s should gradually reach the same extremes. Once all RSI’s are at extreme highs, a trend confirmation should occur and RSI’s should drop to their midpoint.

Trend Definition Analysis of Bitcoin

Trend definition is highly powerful, cannot be understated. Knowledge of trend logic is enough to be a profitable trader, yet defining a trend is an arduous process. Multiple trends coexist across multiple time frames and across multiple market sectors. Like time structure, it makes the underlying price of the instrument irrelevant. Trend definitions cannot determine the validity of newly formed discretes. Trend becomes apparent when trades based in counter-trend inflection points continue to fail.
Downtrends are defined as an instrument making lower lows and lower highs that are recurrent, additive, qualified swing setups. Downtrends for all instruments are similar, except forex. They are fast and complete much quicker than uptrends. An average downtrend is 18 months, something which we will return to. An uptrend inception occurs when an instrument reaches a point where it fails to make a new low, then that low will be tested. After that, the instrument will either have a deep range retracement or it may take out the low slightly, resulting in a double-bottom. A swing must eventually form.
A simple way to roughly determine trend is to attempt to draw a line from three tops going upwards (uptrend) or a line from three bottoms going downwards (downtrend). It is not possible to correctly draw a downtrend line on the BTC chart, but it is possible to correctly draw an uptrend – indicating that the overall trend is downwards. The only mitigating factor is the impending stock market crash.

Time Symmetry Analysis of Bitcoin

Time is the movement from the past through the present into the future. It is a measurement in quantified intervals. In many ways, our perception of it is a human construct. It is more powerful than price as time may be utilized for a trade regardless of the market inflection point’s price. Were it possible to perfectly understand time, price would be totally irrelevant due to the predictive certainty time affords. Time structure is easier to learn than price, but much more difficult to apply with any accuracy. It is the hardest aspect of trading to learn, but also the most rewarding.
Humans do not have the ability to recognize every time window, however the ability to define market inflection points in terms of time is the single most powerful trading edge. Regardless, price should not be abandoned for time alone. Time structure analysis It is inherently flawed, as such the markets have a fail-safe, which is Price Structure. Even though Time is much more powerful, Price Structure should never be completely ignored. Time is the qualifier for Price and vice versa. Time can fail by tricking traders into counter-trend trading.
Time is a predestined trade quantifier, a filter to slow trades down, as it allows a trader to specifically focus on specific time windows and rest at others. It allows for quantitative measurements to reach deterministic values and is the primary qualifier for trends. Time structure should be utilized before price structure, and it is the primary trade criterion which requires support from price. We can see price structure on a chart, as areas of mathematical support or resistance, but we cannot see time structure.
Time may be used to tell us an exact point in the future where the market will inflect, after Price Theory has been fulfilled. In the present, price objectives based on price theory added to possible future times for market inflection points give us the exact time of market inflection points and price.
Time Structure is repetitions of time or inherent cycles of time, occurring in a methodical way to provide time windows which may be utilized for inflection points. They are not easily recognized and not easily defined by a price chart as measuring and observing time is very exact. Time structure is not a science, yet it does require precise measurements. Nothing is certain or definite. The critical question must be if a particular approach to time structure is currently lucrative or not.
We will measure it in intervals of 180 bars. Our goal is to determine time windows, when the market will react and when we should pay the most attention. By using time repetitions, the fact that market inflection points occurred at some point in the past and should, therefore, reoccur at some point in the future, we should obtain confidence as to when SPY will reach a market inflection point. Time repetitions are essentially the market’s memory. However, simply measuring the time between two points then trying to extrapolate into the future does not work. Measuring time is not the same as defining time repetitions. We will evaluate past sessions for market inflection points, whether discretes, qualified swings, or intra-range. Then records the times that the market has made highs or lows in a comparable time period to the future one seeks to trade in.
What follows is a time Histogram – A grouping of times which appear close together, then segregated based on that closeness. Time is aligned into combined histogram of repetitions and cycles, however cycles are irrelevant on a daily basis. If trading on an hourly basis, do not use hours.
  • Yearly Lows (last seven years): 1/1/13, 4/10/14, 1/15/15, 1/17/16, 1/1/17, 12/15/18, 2/6/19
  • Monthly Mode: 1, 1, 1, 1, 2, 4, 12
  • Daily Mode: 1, 1, 6, 10, 15, 15, 17
  • Monthly Lows (for the last year): 3/12/20 (10:00pm), 2/28/20 (7:09am), 1/2/20 (8:09pm), 12/18/19 (8:00am), 11/25/19 (1:00am), 10/24/19 (2:59am), 9/30/19 (2:59am), 8/29,19 (4:00am), 7/17/19 (7:59am), 6/4/19 (5:59pm), 5/1/19 (12:00am), 4/1/19 (12:00am)
  • Daily Lows Mode for those Months: 1, 1, 2, 4, 12, 17, 18, 24, 25, 28, 29, 30
  • Hourly Lows Mode for those Months (Military time): 0100, 0200, 0200, 0400, 0700, 0700, 0800, 1200, 1200, 1700, 2000, 2200
  • Minute Lows Mode for those Months: 00, 00, 00, 00, 00, 00, 09, 09, 59, 59, 59, 59
  • Day of the Week Lows (last twenty-six weeks):
Weighted Times are repetitions which appears multiple times within the same list, observed and accentuated once divided into relevant sections of the histogram. They are important in the presently defined trading time period and are similar to a mathematical mode with respect to a series. Phased times are essentially periodical patterns in histograms, though they do not guarantee inflection points
Evaluating the yearly lows, we see that BTC tends to have its lows primarily at the beginning of every year, with a possibility of it being at the end of the year. Following the same methodology, we get the middle of the month as the likeliest day. However, evaluating the monthly lows for the past year, the beginning and end of the month are more likely for lows.
Therefore, we have two primary dates from our histogram.
1/1/21, 1/15/21, and 1/29/21
2:00am, 8:00am, 12:00pm, or 10:00pm
In fact, the high for this year was February the 14th, only thirty days off from our histogram calculations.
The 8.6-Year Armstrong-Princeton Global Economic Confidence model states that 2.15 year intervals occur between corrections, relevant highs and lows. 2.15 years from the all-time peak discrete is February 9, 2020 – a reasonably accurate depiction of the low for this year (which was on 3/12/20). (Taking only the Armstrong model into account, the next high should be Saturday, April 23, 2022). Therefore, the Armstrong model indicates that we have actually bottomed out for the year!
Bear markets cannot exist in perpetuity whereas bull markets can. Bear markets will eventually have price objectives of zero, whereas bull markets can increase to infinity. It can occur for individual market instruments, but not markets as a whole. Since bull markets are defined by low volatility, they also last longer. Once a bull market is indicated, the trader can remain in a long position until a new high is reached, then switch to shorts. The average bear market is eighteen months long, giving us a date of August 19th, 2021 for the end of this bear market – roughly speaking. They cannot be shorter than fifteen months for a central-bank controlled market, which does not apply to Bitcoin. (Otherwise, it would continue until Sunday, September 12, 2021.) However, we should expect Bitcoin to experience its’ exponential growth after the stock market re-enters a bull market.
Terry Laundy’s T-Theory implemented by measuring the time of an indicator from peak to trough, then using that to define a future time window. It is similar to an head-and-shoulders pattern in that it is the process of forming the right side from a synthetic technical indicator. If the indicator is making continued lows, then time is recalculated for defining the right side of the T. The date of the market inflection point may be a price or indicator inflection date, so it is not always exactly useful. It is better to make us aware of possible market inflection points, clustered with other data. It gives us an RSI low of May, 9th 2020.
The Bradley Cycle is coupled with volatility allows start dates for campaigns or put options as insurance in portfolios for stocks. However, it is also useful for predicting market moves instead of terminal dates for discretes. Using dates which correspond to discretes, we can see how those dates correspond with changes in VIX.
Therefore, our timeline looks like:
  • 2/14/20 – yearly high ($10372 USD)
  • 3/12/20 – yearly low thus far ($3858 USD)
  • 5/9/20 – T-Theory true yearly low (BTC between 4863 and 3569)
  • 5/26/20 – hashrate difficulty halvening
  • 11/14/20 – stock market low
  • 1/15/21 – yearly low for BTC, around $8528
  • 8/19/21 – end of stock bear market
  • 11/26/21 – eighteen months from halvening, average peak from halvenings (BTC begins rising from $3000 area to above $23,312)
  • 4/23/22 – all-time high
Taken from my blog: http://aliamin.info/2020/
submitted by aibnsamin1 to Bitcoin [link] [comments]

r/Bitcoin recap - January 2019

Hi Bitcoiners!
I’m back with the 25th monthly Bitcoin news recap.
For those unfamiliar, each day I pick out the most popularelevant/interesting stories in Bitcoin and save them. At the end of the month I release them in one batch, to give you a quick (but not necessarily the best) overview of what happened in bitcoin over the past month.
You can see recaps of the previous months on Bitcoinsnippets.com
A recap of Bitcoin in January 2019
Adoption * The number of daily bitcoin transactions has been increasing rapidly again (10 Jan) * Bitcoin ads in Tokyo (11 Jan) * A fish-market in San Diego accepting bitcoin (12 Jan) * A discussion on handing out bitcoin at work (14 Jan) * Bitcoin transactions have increased by 50% over 6 months, with fees at a 2 year low (16 Jan) * LocalBitcoins has more volume than the Venezuelan stock market (16 Jan) * A popular content creator deletes his Patreon account and starts accepting bitcoin (16 Jan) * Buying bitcoin at one of 20k coinstar machines (17 Jan) * A story from a European teacher working in China using bitcoin to send money home (22 Jan) * Germany has 1/5th of the world’s Bitcoin nodes (23 Jan) * SatoshiLabs’ Lightning Node routes over 1 btc in transactions in one day (27 Jan) * Someone in Cambodia uses the Lightning Network and Bitrefill to pay their $1 weekly phone bill (30 Jan) * The Lightning Network reaches 600 btc in capacity (30 Jan)
Development * A special thank you to all the Bitcoin Core contributors in 2018 (1 Jan) * A discussion on the need for a lightning network stress test (6 Jan) * New Lightning apps made at the Seoul Bitcoin Lightning Hackathon (7 Jan) * Wasabi wallet can now mix large amounts faster (12 Jan) * Bitcoin Core developer Adam Gibson talks about fungibility, privacy and coinjoin (16 Jan) * A new Bitcoin developers school is launched in Switzerland (28 Jan)
Security * Bitcoin’s immune system (2 Jan) * A discussion on the importance of running full nodes after an attack on another cryptocurrency (8 Jan) * Google Play store requires Samourai Wallet to disable some of its security features (8 Jan) * The Kraken exchange CEO warns users to not store coins on an exchange if you’re not actively trading (16 Jan) * LocalBitcoins.com is compromised (26 Jan)
Mining * Bitmain lost 28% of its bitcoin mining market share in 6 months (2 Jan) * An analysis of a strange nonce pattern in Bitcoin since block 400k (7 Jan) * Bitcoin mining becomes more decentralized as Bitmain loses dominance (18 Jan)
Business * Overstock becomes the first major US company to pay taxes in bitcoin (4 Jan) * Gemini exchange promises it will start using SegWit, Bech32 addresses and transaction batching by the end of Q1 2019 (7 Jan) * Gab emails its 850k users about its switch to Bitcoin (9 Jan) * Bitrefill launches a Lightning channel opening service (9 Jan) * Jihan Wu is stepping down from his role as CEO of Bitmain according to an insider leak (10 Jan) * Bitcoin crowdfunding powered by BTCPay (10 Jan) * Bitmain shuts down its btc.com office (14 Jan) * One of the biggest banks in the Netherlands launches a bitcoin wallet (23 Jan) * A ‘leaked’ photo shows that the Samsung Galaxy 10 has a cryptocurrency wallet (24 Jan) * Data collection by bitcoin businesses (29 Jan) * Fidelity will launch its bitcoin custody service in March (30 Jan) * Paxful a P2P bitcoin marketplace, launches its second school in Rwanda (31 Jan) * The QuadrigaCX exchange goes bankrupt after losing access to its cold wallets (31 Jan)
Research * Data on the Proof of Keys event over the last 9 years (2 Jan) * 50% of the bitcoin supply hasn’t moved in a year (10 Jan) * A rebuttal to the reports of Bitcoin’s environmental damage (31 Jan)
Education * Bitcoin’s first block was mined 6 days after its genesis block (10 Jan) * TIME on why Bitcoin matters for freedom (24 Jan) * A simple explainer video of the Lightning Network (27 Jan)
Regulation & Politics * Coinbase bans Gab.com and its founder (5 Jan) * Some Yellow Vests in France are calling on their supporters to withdraw their money from the banks (8 Jan) * Wyoming introduces bill offering cryptocurrencies legal clarity (19 Jan) * The government of Zimbabwe shuts down the Internet country-wide and hurts its economy (21 Jan) * Venezuela’s new interim president is pro-bitcoin (25 Jan) * Iran lifts its Bitcoin ban (29 Jan)
Archeology (Financial Incumbents) * The European Central Bank has printed €2.85T since 2015 to help sustain the EU economy (4 Jan) * Some of the Yellow Vests in France are calling upon supporters to withdraw money from the banks (8 Jan) * EU fines Mastercard for €570M for high fees (22 Jan)
Price & Trading * Don’t look at ATHs, look at yearly lows (3 Jan) * Whenever you doubt your investing decisions, remember this guy (4 Jan) * Someone creates an open-source terminal dashboard for automated trading and charting (15 Jan)
Fun & Other * Someone put 5% of their paycheck into bitcoin for 3 years (1 Jan) * Bitcoin featured in The Times newspaper on its 10th anniversary (2 Jan) * Bitcoin was launched 10 years ago (3 Jan) * A “How to use bitcoin anonymously” article gets banned on Medium (5 Jan) * A street art treasure hunt in Paris with a Bitcoin puzzle (7 Jan) * An AMA with the co-founder of Wasabi Wallet (7 Jan) * People are trying to encourage others to quit smoking and acquire bitcoin with those savings (8 Jan) * 10 years since Hal Finney’s “Running Bitcoin” tweet (9 Jan) * Gab calls bitcoin “free speech money” (9 Jan) * Nick Szabo on Central Banks, gold and bitcoin (11 Jan) * A discussion on the public perception of ‘hodl’ (12 Jan) * A Twitch streamer receives 20 bitcoin in donations (13 Jan) * The Paris bitcoin puzzle was solved (14 Jan) * An AMA by Blockstream (16 Jan) * The challenges of launching a new cryptocurrency with Proof-of-Work today (16 Jan) * A bitcoin logo on a football team’s shirts in Israel (21 Jan) * Buckminster Fuller on an energy-value system in 1981 (22 Jan) * Someone started anonymously broadcasting messages over Blockstream’s satellites (24 Jan) * Bitcoin is inspiring a new generation of investors (28 Jan) * A story from someone who lost ~$2M USD in btc (29 Jan) * A discussion on tokenization in stock and bonds trading (31 Jan)
submitted by SamWouters to Bitcoin [link] [comments]

Over the last 6 weeks I've written a functioning Crypto trading bot in VB.NET and here are some of the important tips & things I've learned and some VB.NET code for you to use.

I started on December 18th when I was playing about with Google Sheets and pulling prices from exchanges using the CRYPTOFINANCE() plugin... it was slow, clunky and the data was wildly old - I knew I could do something better in VB.NET but at this point had absolutely no idea where to start, no idea about trading, no idea how exchanges or API's worked and no idea just how bad I was at programming. I've asked a lot of dumb questions, I've lost a bunch of money making mistakes & learning as I go... Fast forward to today however and I have a fully functioning, cross-exchange trading bot. Sweet!
1) Truncate your numbers, don't round.**
Hindsight makes this seem so obvious to me now, but when you're working with Bitcoin balances to 8 decimal places, exchange rates to 5 decimal places and sums that can increase your decimal places exponentially, it helps to be precise. Even an extra 0.00000001 in the wrong place can cause an exchange to reject your request. Honestly if I'd have realised this sooner I'd be about 2 weeks ahead right now and nowhere near as bald.
The below functions in will truncate any decimal number with no rounding:
Public Function Trunc8(numbertoTuncate As Decimal) As Decimal Return Math.Truncate(numbertoTuncate * 100000000) / 100000000 End Function Public Function Trunc5(numbertoTuncate As Decimal) As Decimal Return Math.Truncate(numbertoTuncate * 100000) / 100000 End Function 
** Absolutely do round when exchange such as Bitstamp does it's fee calculations in spot USD price. Below is the logic I use to do this:
Dim amount_btc As Decimal = BTCtoSpend / ASK ' Full amount in BTC Dim fee_btc As Decimal = amount_btc * 0.0025 ' Get 0.25% of the BTC amount Dim fee_USD As Decimal = fee_btc * BitstampBTCUSD ' Convert to USD Dim round_USD As Decimal = Math.Round(fee_USD, 2, MidpointRounding.AwayFromZero) ' Round up Dim round_BTC As Decimal = round_USD / BitstampBTCUSD ' Convert back to BTC Dim amount = amount_btc - round_BTC ' minus the fee 
2) Websockets are your friend.
It's really easy to query Bitstamp or GDAX's API for the prices(Last/Bid/Ask). The query might take a 3rd of a second to get there, a 3rd of a second to get back - by the time your software has interpreted it it may have been nearly a full second. The prices you end up being sent back can some times be stale/out of date. Couple this with the API rate limits (Once a second on Bitstamp if you end up polling it continuously) and you can soon end up with stale information. The websockets allow the exchanges to push information to you, in real-time, as it happens. Seriously, they're fucking rad and you can query that data til the cows come home. Millisecond timers FTW!
Bitstamp uses Pusher, GDAX is a plain old web socket. It took me an age to figure it out, and honestly I've done it rather arse-about-tit, but here's the code I ended up using:
Bitstamp:(You'll need PusherClient from Nuget)
Imports PusherClient Imports Newtonsoft.Json.Linq Public WithEvents pusherClient As New Pusher("de504dc5763aeef9ff52") Public WithEvents BitstampLTCBTCOrderbook As Channel Public WithEvents BitstampLTCBTCTrades As Channel Public WithEvents BitstampBTCUSDTrades As Channel Public WithEvents BitstampEURUSDTrades As Channel pusherClient.Connect() Public Sub pusher_Connected() Handles pusherClient.Connected BitstampLTCBTCTrades = pusherClient.Subscribe("live_trades_ltcbtc") End Sub Public Sub BitstampLTCBTCTrades_Subscribed(Sender As Object) Handles BitstampLTCBTCTrades.Subscribed BitstampLTCBTCTrades.Bind("trade", AddressOf BitstampLTCBTCTrade) End Sub Public Sub BitstampLTCBTCTrade(data) Dim jss = JObject.Parse(data.ToString) BitstampPrice = CDec(jss("price_str").ToString) BitstampLastAmount = CDec(jss("amount_str").ToString) End Sub 
That's basically it - the different channels are all documented in the API and you can format the JSON til your little crypto heart's content.
GDAX:(You'll need Websocket4NET from Nuget) P.S. I know my sending raw JSON is a fucking abomination.
Imports WebSocket4Net Imports Newtonsoft.Json.Linq Public WithEvents websocketGDAX As WebSocket websocketGDAX = New WebSocket("wss://ws-feed.gdax.com") websocketGDAX.Open() Public Sub gdax_Connect() Handles websocketGDAX.Opened Dim Data As String = "{ ""type"": ""subscribe"", ""product_ids"":[""BTC-EUR""], ""channels"": [""heartbeat"", { ""name"": ""ticker"", ""product_ids"": [""LTC-BTC""] }]}" websocketGDAX.Send(Data) End Sub Public Sub gdax_Data(sender As Object, args As WebSocket4Net.MessageReceivedEventArgs) Handles websocketGDAX.MessageReceived Dim jss = JObject.Parse(args.Message) Try If jss("type").ToString = "ticker" Then Select Case jss("product_id") Case "LTC-BTC" GDAXPrice = CDec(jss("price")) GDAXBid = CDec(jss("best_bid")) GDAXAsk = CDec(jss("best_ask")) GDAXLastSize = CDec(jss("last_size")) Case "EUR-USD" GDAXEURUSD = CDec(jss("price")) Case "BTC-USD" End Select End If Catch ex As Exception Exit Sub End Try End Sub 
Again, that's kind of it. Some proper error handling wouldn't go amiss, but I'm lazy and I use GOTO's all over the shop anyway so I'm basically a terrible human being.
3) Hashing. Fucking Hashing.
Ok so basically when sending authenticated/private API calls you need to hash bits of the message in order to prove authenticity. This was a bitch to try and cobble together the right code. Here, have it. It's yours:
Imports System.Security.Cryptography Imports System.Text Module Hashing Public Function HMACSHA256_Encrypt(ByVal message As String, secret As String) As String Try Dim secretkey As String = secret Dim sha As New System.Security.Cryptography.HMACSHA256(System.Text.ASCIIEncoding.ASCII.GetBytes(secretkey)) Dim Hash() As Byte = sha.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(message)) Dim sb As New StringBuilder(Hash.Length * 2) For Each B As Byte In Hash sb.Append(Hex(B).PadLeft(2, "0")) Next Return sb.ToString.ToUpper Catch ex As Exception Debug.Print(Date.Now & " SHA256_Encrypt error " & ex.Message) Return Nothing End Try End Function Public Function HashString(ByVal str As String, ByVal secret As Byte()) As String Dim bytes As Byte() = Encoding.UTF8.GetBytes(str) Using hmac = New HMACSHA256(secret) Dim hash As Byte() = hmac.ComputeHash(bytes) Return Convert.ToBase64String(hash) End Using End Function End Module 
Top one for Bitstamp, Bottom one for GDAX. They differ slightly in the way they do things and the output they provide, hence there being two. Don't ask me what they do, couldn't tell you. Not a clue.
4) Verbose logging. Verbose logging. Verbose logging.
So you've made your bot, hit the button and....nothing. Now these things don't happen instantly; Even if you place an order at Ask or Bid, it might be minutes, even hours until it gets filled. Maybe your bot keeps erroring out and you don't know why. Write yourself a little logging function that you can copy and paste into your functions & subs that outputs the data you're sending and the data you're receiving along with a timestamp so you can debug if stuff isn't working. Again, I'm lazy and shit and this took me way longer to realise than it should have.
5) Don't be afraid to ask questions.
One of the biggest things that totally blew my mind was just how closed up some people are; on Reddit, forums, discord rooms... you name it. There's this weird stigma about people who trade & write bots that if they share their knowlege they'll somehow be doing themselves out of returns. Don't be afraid to ask questions. Ask enough, and eventually someone will come along and help. For every 10 people who chastised me for asking for coding help, trading help or whatever, 1 person would help out - it's worth enduring the rough for that... also, fuck those 10 people.
6) God damn Nonce generation.
A nonce is basically a unique, yet increasing number. Again, this was all massive trial and error. Bitstamp nonces and GDAX nonces work slightly differently and are interpreted slightly differently. Here's the code I use:
Module Nonces Public Function GenerateStampNonce() As String Static lastnonce As String Dim newNonce As String = Replace(Math.Round((DateTime.UtcNow - New DateTime(1970, 1, 1, 0, 0, 0)).TotalMilliseconds / 1000, 1).ToString("#0.0"), ".", "") Do While lastnonce = newNonce Threading.Thread.Sleep(10) newNonce = Replace(Math.Round((DateTime.UtcNow - New DateTime(1970, 1, 1, 0, 0, 0)).TotalMilliseconds / 1000, 1).ToString("#0.0"), ".", "") Loop lastnonce = newNonce Return newNonce End Function Public Function GenerateGDAXNonce() As Decimal Static lastnonce As Decimal Dim newNonce As Decimal = (DateTime.UtcNow - New DateTime(1970, 1, 1, 0, 0, 0)).TotalMilliseconds / 1000 Do While lastnonce = newNonce Threading.Thread.Sleep(10) newNonce = (DateTime.UtcNow - New DateTime(1970, 1, 1, 0, 0, 0)).TotalMilliseconds / 1000 Loop lastnonce = newNonce Return newNonce End Function End Module 
It's dirty...I know (I like it that way) - however it just simply works. I'm sure there's a more elegant way of generating these but honestly I ran out of patience on this because it's so simple when you look at it once it works.
7) Don't bog yourself down with a GUI.
Seems kind of daft, but running a bot as a console app forced me not only to be more verbose, but also helped really train my though process in terms of what all the timers in the background are doing. Not to mention, if you're anything like me you'll probably end up bogging it right down with all kinds of unnecessary GUI crap... in fact my first bot that was a total failure had more code to make the GUI whistle and pop than it did quality trading code.
You need so little input for a trading bot besides a config file full of preferences that your only real commands for any kind of interaction are quite simply:
 Console.WriteLine() Console.ReadKey() 
7.5) Limit orders on GDAX - FREE! As in... no fees!
Some people act like this is some kind of trade secret (haha, puns) but if you put a limit order on GDAX you almost always pay absolutely no fees. If you want to GUARANTEE you pay no fees, have your order set to post_only=true. This forces the order onto the books, which means you MUST place it AT Bid/Ask (depending on direction) or above/below, it'll get rejected if you try and eat into the other side of the spread.
8) Async/Multithread your requests to the API's.
I haven't done this, so I have no code to share. But if you suddenly lose connection or there's a blip or whatever, there's often no way of specifying a timeout and it could potentially freeze/crash your application.
-----------------------------------------
I guess that's all I can think of. It might seem like simple, trivial stuff but when it comes to writing something in a language like VB.NET there's very little resources out there at all... I went through some pretty mind-bending trial and error that while fun and now rewarding, was very frustrating at the time.
All in all, writing a program that can interact with an exchange is a wholly steep learning experience and I've learned more in terms of my general programming ability and my knowlege and understanding of trading & exchanges in general than I had in months or even years before doing this.
Feel free to ask any questions, I'll try to answer them as best I can.
submitted by DotNetBarry to BitcoinMarkets [link] [comments]

BIP proposal: Inhibiting a covert attack on the Bitcoin POW function | Gregory Maxwell | Apr 05 2017

Gregory Maxwell on Apr 05 2017:
A month ago I was explaining the attack on Bitcoin's SHA2 hashcash which
is exploited by ASICBOOST and the various steps which could be used to
block it in the network if it became a problem.
While most discussion of ASICBOOST has focused on the overt method
of implementing it, there also exists a covert method for using it.
As I explained one of the approaches to inhibit covert ASICBOOST I
realized that my words were pretty much also describing the SegWit
commitment structure.
The authors of the SegWit proposal made a specific effort to not be
incompatible with any mining system and, in particular, changed the
design at one point to accommodate mining chips with forced payout
addresses.
Had there been awareness of exploitation of this attack an effort
would have been made to avoid incompatibility-- simply to separate
concerns. But the best methods of implementing the covert attack
are significantly incompatible with virtually any method of
extending Bitcoin's transaction capabilities; with the notable
exception of extension blocks (which have their own problems).
An incompatibility would go a long way to explain some of the
more inexplicable behavior from some parties in the mining
ecosystem so I began looking for supporting evidence.
Reverse engineering of a particular mining chip has demonstrated
conclusively that ASICBOOST has been implemented
in hardware.
On that basis, I offer the following BIP draft for discussion.
This proposal does not prevent the attack in general, but only
inhibits covert forms of it which are incompatible with
improvements to the Bitcoin protocol.
I hope that even those of us who would strongly prefer that
ASICBOOST be blocked completely can come together to support
a protective measure that separates concerns by inhibiting
the covert use of it that potentially blocks protocol improvements.
The specific activation height is something I currently don't have
a strong opinion, so I've left it unspecified for the moment.
BIP: TBD
Layer: Consensus
Title: Inhibiting a covert attack on the Bitcoin POW function
Author: Greg Maxwell
Status: Draft
Type: Standards Track
Created: 2016-04-05
License: PD
==Abstract==
This proposal inhibits the covert exploitation of a known
vulnerability in Bitcoin Proof of Work function.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119.
==Motivation==
Due to a design oversight the Bitcoin proof of work function has a potential
attack which can allow an attacking miner to save up-to 30% of their energy
costs (though closer to 20% is more likely due to implementation overheads).
Timo Hanke and Sergio Demian Lerner claim to hold a patent on this attack,
which they have so far not licensed for free and open use by the public.
They have been marketing their patent licenses under the trade-name
ASICBOOST. The document takes no position on the validity or enforceability
of the patent.
There are two major ways of exploiting the underlying vulnerability: One
obvious way which is highly detectable and is not in use on the network
today and a covert way which has significant interaction and potential
interference with the Bitcoin protocol. The covert mechanism is not
easily detected except through its interference with the protocol.
In particular, the protocol interactions of the covert method can block the
implementation of virtuous improvements such as segregated witness.
Exploitation of this vulnerability could result in payoff of as much as
$100 million USD per year at the time this was written (Assuming at
50% hash-power miner was gaining a 30% power advantage and that mining
was otherwise at profit equilibrium). This could have a phenomenal
centralizing effect by pushing mining out of profitability for all
other participants, and the income from secretly using this
optimization could be abused to significantly distort the Bitcoin
ecosystem in order to preserve the advantage.
Reverse engineering of a mining ASIC from a major manufacture has
revealed that it contains an undocumented, undisclosed ability
to make use of this attack. (The parties claiming to hold a
patent on this technique were completely unaware of this use.)
On the above basis the potential for covert exploitation of this
vulnerability and the resulting inequality in the mining process
and interference with useful improvements presents a clear and
present danger to the Bitcoin system which requires a response.
==Background==
The general idea of this attack is that SHA2-256 is a merkle damgard hash
function which consumes 64 bytes of data at a time.
The Bitcoin mining process repeatedly hashes an 80-byte 'block header' while
incriminating a 32-bit nonce which is at the end of this header data. This
means that the processing of the header involves two runs of the compression
function run-- one that consumes the first 64 bytes of the header and a
second which processes the remaining 16 bytes and padding.
The initial 'message expansion' operations in each step of the SHA2-256
function operate exclusively on that step's 64-bytes of input with no
influence from prior data that entered the hash.
Because of this if a miner is able to prepare a block header with
multiple distinct first 64-byte chunks but identical 16-byte
second chunks they can reuse the computation of the initial
expansion for multiple trials. This reduces power consumption.
There are two broad ways of making use of this attack. The obvious
way is to try candidates with different version numbers. Beyond
upsetting the soft-fork detection logic in Bitcoin nodes this has
little negative effect but it is highly conspicuous and easily
blocked.
The other method is based on the fact that the merkle root
committing to the transactions is contained in the first 64-bytes
except for the last 4 bytes of it. If the miner finds multiple
candidate root values which have the same final 32-bit then they
can use the attack.
To find multiple roots with the same trailing 32-bits the miner can
use efficient collision finding mechanism which will find a match
with as little as 216 candidate roots expected, 224 operations to
find a 4-way hit, though low memory approaches require more
computation.
An obvious way to generate different candidates is to grind the
coinbase extra-nonce but for non-empty blocks each attempt will
require 13 or so additional sha2 runs which is very inefficient.
This inefficiency can be avoided by computing a sqrt number of
candidates of the left side of the hash tree (e.g. using extra
nonce grinding) then an additional sqrt number of candidates of
the right side of the tree using transaction permutation or
substitution of a small number of transactions. All combinations
of the left and right side are then combined with only a single
hashing operation virtually eliminating all tree related
overhead.
With this final optimization finding a 4-way collision with a
moderate amount of memory requires ~224 hashing operations
instead of the >228 operations that would be require for
extra-nonce grinding which would substantially erode the
benefit of the attack.
It is this final optimization which this proposal blocks.
==New consensus rule==
Beginning block X and until block Y the coinbase transaction of
each block MUST either contain a BIP-141 segwit commitment or a
correct WTXID commitment with ID 0xaa21a9ef.
(See BIP-141 "Commitment structure" for details)
Existing segwit using miners are automatically compatible with
this proposal. Non-segwit miners can become compatible by simply
including an additional output matching a default commitment
value returned as part of getblocktemplate.
Miners SHOULD NOT automatically discontinue the commitment
at the expiration height.
==Discussion==
The commitment in the left side of the tree to all transactions
in the right side completely prevents the final sqrt speedup.
A stronger inhibition of the covert attack in the form of
requiring the least significant bits of the block timestamp
to be equal to a hash of the first 64-bytes of the header. This
would increase the collision space from 32 to 40 or more bits.
The root value could be required to meet a specific hash prefix
requirement in order to increase the computational work required
to try candidate roots. These change would be more disruptive and
there is no reason to believe that it is currently necessary.
The proposed rule automatically sunsets. If it is no longer needed
due to the introduction of stronger rules or the acceptance of the
version-grinding form then there would be no reason to continue
with this requirement. If it is still useful at the expiration
time the rule can simply be extended with a new softfork that
sets longer date ranges.
This sun-setting avoids the accumulation of technical debt due
to retaining enforcement of this rule when it is no longer needed
without requiring a hard fork to remove it.
== Overt attack ==
The non-covert form can be trivially blocked by requiring that
the header version match the coinbase transaction version.
This proposal does not include this block because this method
may become generally available without restriction in the future,
does not generally interfere with improvements in the protocol,
and because it is so easily detected that it could be blocked if
it becomes an issue in the future.
==Ba...[message truncated here by reddit bot]...
original: https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-April/013996.html
submitted by dev_list_bot to bitcoin_devlist [link] [comments]

[Serious] Of Prices, ASICs and X11

WARNING: WALL OF TEXT, HIGH SCIENCE CONTENT
Friends, shibes, it is my pleasure to speak with you for what I hope is the first and not the last time. I'm arrdem, I'm a Doge daytrader, economist and miner on the side, and a programmer during the day. Today I'd like to have a chat about some of the rumors with regards to ASICs and the X11 hash that have been floating around /dogecoin for the last few weeks and I hope bring some light to the discussions.
On Scrypt
What is special about our hash function? Why does Bitcoin use SHA256 and why does Doge use Scrypt? The hash function used by each cryptocurrency must have no known inverse function or algorithmic weakness which allows miners to cheat and compute nonces easily, and it needs to be easy to verify or recompute given an input. The first requirement is obvious in that if the hash function is weak, then someone can achieve a 51% attack potentially with less than 51% of the network's hashing power. The second is less obvious and is in fact entirely a performance issue.
SHA256 is a known and trusted algorithm which has yet to exhibit any known weaknesses, and it is very very fast to recompute. This is why Bitcoin is SHA based.
Litecoin, the intellectual father of Dogecoin, chose the Scrypt hash function because it was a memory bound algorithm. That is, the slowest part of computing the Scrypt hash of some value is waiting for values to be fetched from memory: an operation which it is amazingly expensive to make fast. The goal of choosing an artificially expensive hash function was to escape the Application Specific Integrated Circuits (ASICs or hardware miners) which had come to dominate Bitcoin mining. Because the SHA256 algorithm does not have large memory requirements, it was easy for Bitcoin speculators to develop cost effective hardware for the single purpose of searching for SHA256 nonce values.
On ASICs
Before we get to whether ASICs are good or bad for a coin, we must first assess why they made sense for Bitcoin so that we can reason about their impact on Doge.
Because the computational power to find a nonce for any good cryptocurrency is expected to be large, that means there is a literal cost attached to processing each transaction on the network. While transactions may be nominally free or at least low fee, miners are really speculators expecting that someday the value of the coins they earn computing nonce values for blocks will exceed the operating costs and purchase costs of the hardware they mine with. This expectation that one day mining costs will be repaid is in fact the key reason that Bitcoin featured block rewards. The block reward was seen as a bootstrapping mechanic with which to buy hardware investment in the Bitcoin network through currency inflation.
Now, ASICs and other mining hardware only pay for themselves if one expects to get enough return from block rewards and future coin price increases to cover the purchase and operating costs of the hardware. However, this is where the block schedule comes in. If we expect that thanks to the law of large numbers that one's return is on average the block reward times ones fraction of the network hashrate, it becomes clear that as the block reward falls it becomes very difficult for any purchased mining hardware to pay itself off let alone turn a profit especially as other miners purchase hardware to compete for the same block rewards thus driving up the hashrate.
On the block schedule
Looking at the Bitcoin block schedule, ASICs kinda make sense. The Bitcoin block schedule extends until 2140, at which time the "omega block" will be mined and the per block reward of Bitcoin mining will become zero. However until that time the per block reward will decrease 50% every four years. Today in 2014, the per block reward of Bitcoin is 25BTC and it won't change until 2017. That means that Bitcoin targeted ASICs can potentially run for three whole years or more and still have a reasonable chance of breaking even with no assuptions made about changes in the value of 1BTC.
Doge's block schedule looks completely different. Where Bitcoin has a long tail on its per block reward extending out to 2140, Dogecoin will reach it's minimum block reward at block 600,000 in January of 2015, less than 14 months after Dogecoin came into being. With the 3rd halvening about 11 days out and the 4th on the horizon, by the time big boy ASICs for Scrypt start shipping in Q3/Q4, being September and later, the per block reward of Doge will have fallen to 31.25KDOGE and below. Third generation ASICs slated for December and January will likely never see more than 15.625KDOGE/block.
On the price of Doge
So what does this mean for the price of Doge? If the price of Doge doesn't increase at all, it's clear that the expensive new ASICs will never break even. This suggests that late comers with high powered mining hardware will be looking to recoup their investments and asking higher and higher prices for their Doge which should drive up the price overall.
To put some numbers on this, at current prices and hashrate, accounting for halvenings, neither Gridseed ASIC even breaks even within 200 days if purchased within the next 48hrs. fn:1. Wait 30 days (after the comming halvening) and you don't come anywhere near break even. If I change my model to include some hashrate growth factor, the outlook is even worse. fn:2.
This isn't bad news. This is awesome news for the price of DOGE. Lets say that Gridseed ships oh 500 units of their big boy ASIC, which may be conservative. fn:3 That's right, if hardware equivalent to 1K large Gridseeds came on in the next 30 days and ran at least for 200, doge would have to go all the way up to 702DOGE/USD just for them to break even!
To the moon
So where does this leave us. I think that the numbers I've presented here show that ASICs for Dogecoin are patently absurd, unless you expect to see a gargantuan spike in the price of DOGE which would make us all rich men anyway. While I'm willing to speculate on block reward (which is easy to model) and on hashrate which I assume is more or less linear, I have no mechanism with which I can confidently predict the price of DOGE out more than a week. Naive linear projections from our initial open of 80 satoshi to today's 126 satoshi over the course of four months suggests that in 200 days we could well see the ~300 satoshi prices which would make Gridseed and other ASIC miners profitable. However once you account for the high volatility of Doge, of Bitcoin and general market manipulation who knows if it'd ever go that high stably.
So. To sum up. On the basis of these sketchy ROI numbers, I think that buying ASICs is probably ill advised. That said, I expect that people will buy ASICs and that in doing so they will drive up the price of DOGE at the same time as the supply of DOGE starts to dry up due to block reward decreases.
I will be interested to see what happens to DOGE mining in January, as we will be the first coin to reach their steady mining state. I hope that the 10,000 DOGE reward per block will be sufficient to support the ASIC and GPU mining required to keep our hashrate out of 51% threat, but only time will tell. There is a real threat that the ROI of mining will be too low to justify the purchase of new ASIC let alone GPU hardware, which would lead to a falling hashrate and a credible threat of 51% vulnerability. However we could also see prices to go to the moon in which case that is no worry as high efficiency ASIC farms would take over mining securing the coin's stability more or less. I will note that no coin has yet solved the 51% threat issues posed by centralized mining, and I'm personally convinced that it's an intractable problem because as rewards per block decrease as for bitcoin, the costs of mining operations must likewise fall leading to greater centralization of compute power. By fixing our block reward we may. may. be able to dodge (ha ha) this issue however the essential drive to cut mining prices for ROI maximization will remain and will continue to drive mining centralization.
With all this in mind, it's silly to talk about the adoption of X11 or another hashing algorithm, because if and when ASIC miners for DOGE become big business it'll already be too late and we will have already mined the vast majority of DOGE thus securing the distribution of DOGE away from the ASIC miners we seem to fear so much as a community. Making the switch to X11 simply delays the ASIC hardware which we want anyway due to the price increases it's likely to drive, forget about making us artificially dependent on GPU mining to secure our hashrate and creating an uncalled for blockchain fork.
TL;DR
  1. Stop worrying and love the ASICs, they won't make a ton of money and will secure our hashrate and by proxy our Doges!
  2. STFU about X11. It's even more ASIC friendly than Scrypt, and we gain nothing from another blockchain fork.
  3. Price projection: moon!
  4. Open issue: How do we limit mining centralization without increasing inflation? Are we already at a balance point?
MSC
The software I've built and used to make these models is entirely open source and written in Clojure, see the footnotes for source and libraries.
Other programs involved
https://www.refheap.com/78314
https://github.com/arrdem/meajure
Edit History
  1. Wording typo fixed
  2. Fix fn:2 to reflect increased network hashrate
  3. Don't bother asking me what I think the price of DOGE will be. Not the foggiest.
  4. Fix final block reward, 10k not 100k
  5. Fix omega block date for BTC, 2140 not 2024
submitted by Arrdem to dogecoin [link] [comments]

[uncensored-r/BitcoinMarkets] Over the last 6 weeks I've written a functioning Crypto trading bot in VB.NET and here are some o...

The following post by DotNetBarry is being replicated because some comments within the post(but not the post itself) have been silently removed.
The original post can be found(in censored form) at this link:
np.reddit.com/ BitcoinMarkets/comments/7tw2s5
The original post's content was as follows:
I started on December 18th when I was playing about with Google Sheets and pulling prices from exchanges using the CRYPTOFINANCE() plugin... it was slow, clunky and the data was wildly old - I knew I could do something better in VB.NET but at this point had absolutely no idea where to start, no idea about trading, no idea how exchanges or API's worked and no idea just how bad I was at programming. I've asked a lot of dumb questions, I've lost a bunch of money making mistakes & learning as I go... Fast forward to today however and I have a fully functioning, cross-exchange trading bot. Sweet!
1) Truncate your numbers, don't round.**
Hindsight makes this seem so obvious to me now, but when you're working with Bitcoin balances to 8 decimal places, exchange rates to 5 decimal places and sums that can increase your decimal places exponentially, it helps to be precise. Even an extra 0.00000001 in the wrong place can cause an exchange to reject your request. Honestly if I'd have realised this sooner I'd be about 2 weeks ahead right now and nowhere near as bald.
The below functions in will truncate any decimal number with no rounding:
Public Function Trunc8(numbertoTuncate As Decimal) As Decimal Return Math.Truncate(numbertoTuncate * 100000000) / 100000000 End Function Public Function Trunc5(numbertoTuncate As Decimal) As Decimal Return Math.Truncate(numbertoTuncate * 100000) / 100000 End Function 
** Absolutely do round when exchange such as Bitstamp does it's fee calculations in spot USD price. Below is the logic I use to do this:
Dim amount_btc As Decimal = BTCtoSpend / ASK ' Full amount in BTC Dim fee_btc As Decimal = amount_btc * 0.0025 ' Get 0.25% of the BTC amount Dim fee_USD As Decimal = fee_btc * BitstampBTCUSD ' Convert to USD Dim round_USD As Decimal = Math.Round(fee_USD, 2, MidpointRounding.AwayFromZero) ' Round up Dim round_BTC As Decimal = round_USD / BitstampBTCUSD ' Convert back to BTC Dim amount = amount_btc - round_BTC ' minus the fee 
2) Websockets are your friend.
It's really easy to query Bitstamp or GDAX's API for the prices(Last/Bid/Ask). The query might take a 3rd of a second to get there, a 3rd of a second to get back - by the time your software has interpreted it it may have been nearly a full second. The prices you end up being sent back can some times be stale/out of date. Couple this with the API rate limits (Once a second on Bitstamp if you end up polling it continuously) and you can soon end up with stale information. The websockets allow the exchanges to push information to you, in real-time, as it happens. Seriously, they're fucking rad and you can query that data til the cows come home. Millisecond timers FTW!
Bitstamp uses Pusher, GDAX is a plain old web socket. It took me an age to figure it out, and honestly I've done it rather arse-about-tit, but here's the code I ended up using:
Bitstamp:(You'll need PusherClient from Nuget)
Imports PusherClient Imports Newtonsoft.Json.Linq Public WithEvents pusherClient As New Pusher("de504dc5763aeef9ff52") Public WithEvents BitstampLTCBTCOrderbook As Channel Public WithEvents BitstampLTCBTCTrades As Channel Public WithEvents BitstampBTCUSDTrades As Channel Public WithEvents BitstampEURUSDTrades As Channel pusherClient.Connect() Public Sub pusher_Connected() Handles pusherClient.Connected BitstampLTCBTCTrades = pusherClient.Subscribe("live_trades_ltcbtc") End Sub Public Sub BitstampLTCBTCTrades_Subscribed(Sender As Object) Handles BitstampLTCBTCTrades.Subscribed BitstampLTCBTCTrades.Bind("trade", AddressOf BitstampLTCBTCTrade) End Sub Public Sub BitstampLTCBTCTrade(data) Dim jss = JObject.Parse(data.ToString) BitstampPrice = CDec(jss("price_str").ToString) BitstampLastAmount = CDec(jss("amount_str").ToString) End Sub 
That's basically it - the different channels are all documented in the API and you can format the JSON til your little crypto heart's content.
GDAX:(You'll need Websocket4NET from Nuget) P.S. I know my sending raw JSON is a fucking abomination.
Imports WebSocket4Net Imports Newtonsoft.Json.Linq Public WithEvents websocketGDAX As WebSocket websocketGDAX = New WebSocket("wss://ws-feed.gdax.com") websocketGDAX.Open() Public Sub gdax_Connect() Handles websocketGDAX.Opened Dim Data As String = "{ ""type"": ""subscribe"", ""product_ids"":[""BTC-EUR""], ""channels"": [""heartbeat"", { ""name"": ""ticker"", ""product_ids"": [""LTC-BTC""] }]}" websocketGDAX.Send(Data) End Sub Public Sub gdax_Data(sender As Object, args As WebSocket4Net.MessageReceivedEventArgs) Handles websocketGDAX.MessageReceived Dim jss = JObject.Parse(args.Message) Try If jss("type").ToString = "ticker" Then Select Case jss("product_id") Case "LTC-BTC" GDAXPrice = CDec(jss("price")) GDAXBid = CDec(jss("best_bid")) GDAXAsk = CDec(jss("best_ask")) GDAXLastSize = CDec(jss("last_size")) Case "EUR-USD" GDAXEURUSD = CDec(jss("price")) Case "BTC-USD" End Select End If Catch ex As Exception Exit Sub End Try End Sub 
Again, that's kind of it. Some proper error handling wouldn't go amiss, but I'm lazy and I use GOTO's all over the shop anyway so I'm basically a terrible human being.
3) Hashing. Fucking Hashing.
Ok so basically when sending authenticated/private API calls you need to hash bits of the message in order to prove authenticity. This was a bitch to try and cobble together the right code. Here, have it. It's yours:
Imports System.Security.Cryptography Imports System.Text Module Hashing Public Function HMACSHA256_Encrypt(ByVal message As String, secret As String) As String Try Dim secretkey As String = secret Dim sha As New System.Security.Cryptography.HMACSHA256(System.Text.ASCIIEncoding.ASCII.GetBytes(secretkey)) Dim Hash() As Byte = sha.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(message)) Dim sb As New StringBuilder(Hash.Length * 2) For Each B As Byte In Hash sb.Append(Hex(B).PadLeft(2, "0")) Next Return sb.ToString.ToUpper Catch ex As Exception Debug.Print(Date.Now & " SHA256_Encrypt error " & ex.Message) Return Nothing End Try End Function Public Function HashString(ByVal str As String, ByVal secret As Byte()) As String Dim bytes As Byte() = Encoding.UTF8.GetBytes(str) Using hmac = New HMACSHA256(secret) Dim hash As Byte() = hmac.ComputeHash(bytes) Return Convert.ToBase64String(hash) End Using End Function End Module 
Top one for Bitstamp, Bottom one for GDAX. They differ slightly in the way they do things and the output they provide, hence there being two. Don't ask me what they do, couldn't tell you. Not a clue.
4) Verbose logging. Verbose logging. Verbose logging.
So you've made your bot, hit the button and....nothing. Now these things don't happen instantly; Even if you place an order at Ask or Bid, it might be minutes, even hours until it gets filled. Maybe your bot keeps erroring out and you don't know why. Write yourself a little logging function that you can copy and paste into your functions & subs that outputs the data you're sending and the data you're receiving along with a timestamp so you can debug if stuff isn't working. Again, I'm lazy and shit and this took me way longer to realise than it should have.
5) Don't be afraid to ask questions.
One of the biggest things that totally blew my mind was just how closed up some people are; on Reddit, forums, discord rooms... you name it. There's this weird stigma about people who trade & write bots that if they share their knowlege they'll somehow be doing themselves out of returns. Don't be afraid to ask questions. Ask enough, and eventually someone will come along and help. For every 10 people who chastised me for asking for coding help, trading help or whatever, 1 person would help out - it's worth enduring the rough for that... also, fuck those 10 people.
6) God damn Nonce generation.
A nonce is basically a unique, yet increasing number. Again, this was all massive trial and error. Bitstamp nonces and GDAX nonces work slightly differently and are interpreted slightly differently. Here's the code I use:
Module Nonces Public Function GenerateStampNonce() As String Static lastnonce As String Dim newNonce As String = Replace(Math.Round((DateTime.UtcNow - New DateTime(1970, 1, 1, 0, 0, 0)).TotalMilliseconds / 1000, 1).ToString("#0.0"), ".", "") Do While lastnonce = newNonce Threading.Thread.Sleep(10) newNonce = Replace(Math.Round((DateTime.UtcNow - New DateTime(1970, 1, 1, 0, 0, 0)).TotalMilliseconds / 1000, 1).ToString("#0.0"), ".", "") Loop lastnonce = newNonce Re... 
submitted by censorship_notifier to noncensored_bitcoin [link] [comments]

The 2.3.0 version of the Cryptocurrency Product for WooCommerce plugin is released

The 2.3.0 version of the Cryptocurrency Product for WooCommerce plugin is released: https://wordpress.org/plugins/cryptocurrency-product-for-woocommerce

Cryptocurrency Product for WooCommerce is the only one WooCommerce plugin that allows you to sell Ether or any ERC20/ERC223 token for fiat money like USD, EUR, … or any cryptocurrency, like bitcoin, litecoin, dogecoin or any other WooCommerce supports.

Most notable additions:

Roadmap:
submitted by olegabr to ethereumicoio [link] [comments]

Blockchain to fix horribly broken e-mail system like it is today?

E-mail as it is, is horribly broken. Horrendously broken.
It wasn't that many years ago that you could be assured your e-mail reaches whoever you were mailing to. Today it is a mere suggestion, that perhaps this should be delivered to this person, at least for any automated e-mail. This seems to be creeping to manual, organic email as well. Hell, we are seeing even internal e-mails being flagged by spamassassin as spam, organic, human written conversations! In that instance, the spamassassin is also maintained by one of the largest hosting providers in the world...
Hotmail/MS services has been for years (atleast about 4 years now!) been silently dropping email, not all, but some. There's a bit of relief lately, as they have started to favor a bit more marking as spam, rather than silently dropping.
I know, most email users don't see this problem, but those who use email a lot to do their work, and those who need to send automated emails (say, welcome e-mails for a service) this is a big problem. (Disclaimer, for us, our niche of hosting probably causes flagging as well. Our site is blocked by many corporate firewalls for example)
Blockchain to the rescue?
This is an idea i've been toying around with a few years. What if any single e-mail would cost a faction of a cent, and who receives the e-mail, gets paid for it? Now that would solve a lot of problems. I realize there has been some half assed attempts on blockchain based e-mail, but they are about replacing email (never going to happen). Using blockchain to enhance the current experience, with least minimal friction should be the goal, not re-inventing the wheel.
Imagine a say 0.01 cent (0.0001 USD) cost per e-mail. This price would not be cost prohibitive even for free e-mail service providers (Ad revenue etc. should exceed this value), never mind any legit e-mail users. Especially considering you get paid for receiving. So all legit e-mail services would work rather well regardless of the cost. (never mind free email service could profit from this)
Spam however? To send 1 million emails you would need to pay 100$. How many spammers would continue doing so? At least it makes things much harder, not so easy to use a botnet to send your email when you need to include your private key(s) to the botnet, or make some kind of private key management system, makes more complicated.
Small business newsletters? Say you need to send 100k e-mails to legit customers, 10$ is nothing. To human time crafting that newsletter is order (possibly orders) of magnitude greater than that.
Price would also fluctuate as per the market. The most difficult thing would probably be setting the self balancing mechanisms to keep per mail cost sensible. As such, the biggest hurdle in this might not be technical at all.
Technically, how could this work?
Sender sends a TX for e-mail they are sending for recipient. This TX contains message with mail ID, and a segment which can be used with the email contents to unlock the private key for the payment. This way it is verified that recipient mail servers receives and reads the email. Once the recipient server has calculated the private key, they can either TX the received sum to their wallet, or this needs to be formatted so that once the sender has sent it, they cannot recover the private key and double spend (technical hurdle A. For someone who knows their stuff unlikely to be an major hurdle)
Step by step repeat: * Sender checks if recipient has "MailCoin" capability * Sender sends TX to recipient * Sender sends the email to recipient * Recipient notices on mail header (say x-mailcoin-tx: TXID_HERE) that this is a "mailcoin" mail * Recipient checks TX if it has been received * Recipient puts the mail on delivery queue, antispam is instructed of heavy negative score (MTA admin configurable) * Recipient claims the value of the TX (this is the hurdle A). Recipient can only claim the TX value in case they have received the full e-mail. (Question, can this step be pushed even further down the delivery chain, but still remain MTA only level without mail client support?). Most likely solution is that the header contains the encrypted private key, and chain TX contains the key to decrypt that private key to claim the coins, or vice-versa?
Once recipient has the email & payment, they simply mark on their Antispam a automatic lower score and deliver it normally.
E-mail server side we have several components:
Most typical scenario would be the Recipient server works as outgoing as well, with single wallet. So depending on your mail volume, do you send or receive more on that wallet you might never need to worry about the coins (except for value going skyhigh and having like 10k $ worth of "MailCoins").
So perhaps additional components on per use case are needed, or more likely rudimentary scripting capability (ie. "MailCoin" daemon api) to keep the balances in check.
Technical hurdle B: This needs to be super super simple to setup. Or sufficient financial incentive. One would need to develop standard components & configs for exim, postfix, and other MTAs. Infact, make it autogenerate wallet ID etc. and easy to replace or import private keys etc. to put in coins for sending if you need to.
Privacy: On the blockchain you would not see the e-mail contents, only that e-mail likely took place (TX with mail UUID) to recipient. If sender can be deciphered it depends on them if it can be traced who they were. Automatic mixers? :) Recipient can also keep cycling the receive addresses to keep things private if they want to.
The biggest problem i see here, is that if an attacker can deduce the sender and/or recipient, it might to lead to some issues out of the scope of technical solutions. If attacker could read the emails, they would already have accomplished MitM and could just grab all e-mails.
Default implementation should be so, that from recipient address outsider cannot deduce the recipient server nor hostname.
Also, if attacker gains access to your mail with full headers, they could see the TXs in blockchain. MTA might need to scrub mailcoin related headers (yuck, scrubbing headers ....) for paranoid users, but most likely solution is that recipient retransmits those mailcoins as soon as they got the private key for the balance.
Blockchain: Blocks needs to be done every 10seconds or so, it needs to be fast. Preferrably even every 5 seconds, as not to cause any undue delay. Then again, if your application is reliant on receiving email within seconds, one should consider another means for communicating. Imho, email should be considered a little bit like snail mail, but on internet pace: Couple minutes delay is just OK.
Block size given the e-mail volume needs to be fairly large as well, considering the time between blocks. This is technical hurdle C: Hosting the full blockchain. I can easily foresee that this would grow to be terabytes in size. However, any large email operator would have vested interest in ensuring smooth operation of the blockchain, and for them, running a full node would have neglible cost.
(Technical hurdle C) Single email sent using the system could easily have TX contents of 100 bytes + TX headers + block headers etc. Say 100 bytes, and 100 million emails per day: 9.31GiB per day, 3 399GiB per year, 5 years later: 16.60 TiB just for the mail TXs.
Some estimate there is 200+ billion emails per day, but we all know large portion of this is spam. But even at 50 billion emails a day, 100 bytes per mail TX would add to 4.55TiB per day! So optimizing the blockchain size is obviously going to be important. The volume will be obviously much smaller as semi-spam (those daily half opt-in spamvertising from companies you know) will be lower as well. So probs 100+ billion emails per day at 100% adoption.
Blockchain should then be compressed, the whole block. Algorithm probably should favor speed over compression rate, and should be task specifically optimized (needs a simple reference release, where you can just stream the block contents into it and get output as compressed or uncompressed). The more compression there is, the more full nodes will be hosted by smaller operators :)
For large e-mail server clusters there should be central store for the blockchain, but this can be accessed on the system administratoconfig level already. The MTA components will just remotely talk to single full node daemon (so not really different from many implementations in existence right now), instead of each one running locally a full node.
At today's cheapest hosting rates 16.60TiB is roughly around 85-100€ a month. Purchase cost per 8TB drive is around 230€ mark right now, externals are cheaper. Not an issue for any even semi serious mail provider. Not even issue for datahoarder individuals.
However at 100 billion mails per day: 9.09TiB per day added, which is prohibitively large! We should be targeting something like 20bytes per mail final storage spent, or even less.
If it looks like it is going to grow really large, full node needs to have configurable multiple storages, so they can store parts of the blockchain on multiple different devices (ie. individual might choose to have it on 4 different external drives).
Filesystem side optimizations are needed as well, but these are fairly simple, just split into multiple subdirectories by the 10 thousand blocks or so, ie. 1 for blocks 1-10k, 2 for blocks 10 001 to 20k etc. Filesystems get exponentially slower the more files there is per directory. 10k might start to show slowing down, but is not significant yet.
Nodes could also implement secondary compression (compress multiple blocks together), if the blockchain starts to become stupid large. If it starts to become impossible to maintain, we could possibly implement a scrubbing methodology, where very old blocks get the TX contents wiped as they are not necessary anymore. Should not be an issue
Blocks with 10second target generated per annum: 3 153 600 Mails per 10second: 115 740 e-mails per 10second block. Final compressed size (say 20 bytes per mail): 2.20MiB + headers etc. per block Let's start small and allow linear growth to this, say 0.1% per day (36.5% annual) and start from 20k / 512KiB. After 3 years: 41.9k / 1072.64KiB per block, After 10 years: 93k / 2380.8KiB. (2027 we should have HDDs in the size of 30TB and daily max size for chain growth is 19.61TiB)
On the positive side every problem is an opportunity in disguise. If the blockchain is large, once again botnets will have a hard hard time to spamming, they can't host the full blockchain on infected machines. They will need to develop centralized mechanisms on this regard as well. One method i can see is by having TOR client built in, and via .onion domain to anonymize, but this is two way street, security researchers could exploit this (see above about the private keys) as well. Even without botnets, spammers will need to dedicate significant resources to host the full blockchain.
On the flip side, if spammer has also mining operation on the same local area network, they have both the income for mailcoins + full blockchain, and could leverage economies of scale, but this too would increase cost. And after all: This is all about increasing cost for spamming, while having the price in vicinity where real e-mail users, real businesses it is not a significant impact, or may even be an income source
Client side
Zero, Nada changes. No changes to outlook, thunderbird etc. Everything works under the hood at the MTA level. Very easy adoption for the end user. Everything is in the backend, server side.
Economics for users
Cost of operation has above been shown to increase wildly for spammers. But how about normal use cases?
Joe Average: They receive e-mail a lot more than they send, all kinds of order confirmations, invoices, newsletters and other automated e-mail. They will actually earn (however tiny amounts) from using this system. So for the masses, this is a good thing, they will see the earning potentials! which brings us to ....
New business opportunities! I could foresee a business setting up spam traps, the more e-mail you receive the more you earn! So it pays to get your receiver into spam lists. You don't ever need to read these, just confirm receive of them. All of sudden we could see even greater numbers of invalid e-mail addresses in spam lists, making spamming ever more expensive!
Free email services might proof to be extremely profitable, to the point of potential revenue sharing with Joe Averages (and above spamtraps). Because free email is mostly joe averages, they will have greater influx than outgoing. On the caveat, free email needs to have limits, but due to the low cost and potential of earnings, they could implement "mail credits" system, base is like 20 emails a day, but each received email could increase this credit limit. As such, it makes actually sense for free email services to implement this at the very least on the receiving side.
Business mass emailings. A business which has 100k valid e-mails on their database will not have a problem with paying few dozen bucks to have their mass mailing delivered. BUT they will make extra sure the content is good and targeted, something the recipient wants to receive. These will be the biggest spenders on email, apart from spammers.
ISPs, hell they get paid to provide e-mail. And they are on the same spot as free email service providers, they stand to earn more than spend!
Blockchain economics
This is where things might get interesting, there is so much potential.
However, there are several things definitively should not be done:
1 & 2 are easy, just do not mine outside of testnet prior to launch. (If devs get paid by companies, there is conflict of interest as well, but let's not get into that right now)
3: Miners and/or full node maintainers decide what goes on. Probably miners like bitcoin is supposed to.
4: Infinite & preferential supply: No after the launch "contracts" etc. to give coins to preferential parties, it should remain as on the launch unless majority consensus says there will be a change. Proof of stake is gray area imho, but then again also proof of work is the rich gets richer.
Mining: Storage requirement is a blessing in disguise, the massive storages required for this to function means that there will be no central hardware developer who sells all the shovels, without significant other markets. Ie. WD, Seagate, Toshiba the main players.
This means algo needs to be based on the full blockchain being hosted. The hashing needs to be so that GPUs are the king most likely, since almost anything good for CPUs is also doable in GPUs. Eventually someone will likely come with ASIC alternative, but due to masses of data it WILL require high bandwidth, high memory. Nothing like bitcoin currently, where low bandwidth, no memory requirement for the ASIC. There needs to be some expensive commodity components in there (RAM, Storage), and as such GPUs are the most likely candidate, and the bottleneck will not likely be computation, but I/O bandwidth.
Quickly thinking, previous block could include number of blocks to be included on the next for verification, in a highly compressible format. Let's say difficulty is number of blocks to be hashed, or from difficulty you can calculate number of blocks to be included. Previous blocks miner just chooses on random blocks to be included on the next one. Listing 10 series of blocks to be included, which can include series instructions. It could request block #5729375+100, or #357492+500 stepping 5 (every 5th block). Hell the random generator could use last block as seed for the next one to make it deterministic YET random as the emails and TXs change. (WTF, Did i just solve how the algo needs to work?!?) Only blocks which would differentiate is the first few, and obviously Genesis, for which an "empty" block would be what is to be hashed.
Hashing algo could be SHA256 because of the high requirement of streaming data, and most ASIC miners lacking in bandwidth (infact, it could be made compatible with bitcoin, but only those ASICS with higher I/O bandwidth than storage/ram I/O bandwidth is could actually boost the perf)
Different hashable list operations could be (on the block list what to be hashed on the next one): * Single block * Block # + number of blocks * Block # + (number of blocks with stepping) * Block # + number of blocks chosen by random using each hashed block as the seed for choosing next one (makes prefetch, preread, caching not work efficiently) * Number of previous blocks mined (ie. 50 last blocks) * Above but with stepping operator * Above but with choose random next X blocks, with variations based on the last hashed, sum of the hashed * All random pickers would have operation modes for the seed to be used: From hashed sum, the whole block, block contents, block header
These modes would ensure the blocks are there and makes it a lot dependable on variable factors, RAM speed, I/O seek time, I/O bandwidth.
This way we have proof that the miner has access to those blocks in efficient manner and the full blockchain is stored there, even if it is not practically retrievable from him / her over the internet for others to obtain a copy. HOWEVER, due to the data volumes, i think it is given they have fast access, but a miner would probably prefer not to share their blockchain contents to have bandwidth free for their mining, as the deadlines are tight. It could be built into the full node spec that they do not accept new blocks from sources which are not ready to supply any given block, and perhaps even periodic test of this. However, this would be unenforceable if people start running custom coded nodes which disables this, as it is not part of the blockchain calculation. It is not miner's benefit to "waste" precious bandwidth to serve others the vast blockchain, meanwhile it is end users benefit those running full nodes without mining to get them fast. So an equilibrium might be reached, if miners start loosing out because other miners will not share their blocks, they will start offering them, even if prioritized.
At 2MiB blocks, 10 second deadline, a miner would preferentially want the new block within 500ms, which would be barely sufficient time for a round trip across the globe. 500ms for 2MiB is 4MiB/s transfer rate inbound, and when block found you want it out even faster, say 250ms you'll need 8MiB/s burst which very very few have at a home. At more usual 1MiB/s it would take 2secs to submit your new block. On the other hand, if you found the block, you'd have immediate access to begin calcing the next one.
Block verification needs to be fast, and as such the above difficulty setting alone is not sufficient, there needs to be nonce. Just picking the right block is not guarantee there will be match, so traditional !???? nonce needs to be set as well most likely. As such, a lot of maths needs to be done to ensure this algorithm does not have dead ends, yet ensures certain blocks needs to be read as full and stored fully by the miners, just plain hashes of the blocks is not sufficient.
Perhaps it should be block data + nonce, then all the blocks hashes (with nonce, or pre-chosen salt) and to be generated block combined hash with nonce needs to have certain number of zeroes. Needs testing and maths :)
So there are many ways to accomplish proof of storage, we'd need just to figure out the which is the best.
Sidenote, this same algo could potentially be used with different settings for immutable, forever storage of data. Since there is no continuing cost to store data, TX Fee for every message (data) byte should be very high in such a coin.
Supply. Needs to be predictable and easy to understand. It would be preferential the standard mailing out is always 1x MailCoin, albeit coin itself should be practically infinitively divisable, and as such supply needs to be in the trillions eventually. But these things get complicated really fast, so we need to set a schedule.
Current email use is very large, so we should have something in the same magnitude. 8640 blocks per day - so maybe 10 000 coins per block == 86 400 000 new coins per day == 31 536 000 000 new coins per year, halving every 2 years. First halving: 63 072 000 000, Second halving: 94 608 000 000, Third (6 years): 110 376 000 000, but only halving 4 or 5 times to keep some new supply for ever increasing adoption and lost coins.
Got all the way here? :D
Thanks for reading up. Let me know what you think, and let's start a discussion on the feasibility of such a system!
I cannot develop this myself, but i would definitively back an effort up in the ways i can if anyone attempts to do something like this :) And i know i got probably many of the details incorrect
The main point of the methods described above is ease of adoption. Without adoption any system is worthless, and with email, you just cannot replace it like that (see the attempts trying to replace IPv4 with IPv6 ...), but you can enhance it. adoption is very critical in communications systems. (No one would have a phone if no one else had a phone)
Addendum 1: Forgot to add about pricing and markets, read comment here
Addendun 2: Bad actors and voting
submitted by PulsedMedia to Bitcoin [link] [comments]

There is an enormous jump in mining difficulty directly ahead of us.

As shown here, in less than three days the difficulty of finding a valid nonce will increase by roughly 16 million points. That's the largest single-jump in bitcoin's history (by a lot), and the largest jump relative to the previous difficulty since Summer 2014. The difference between today and 18 months ago, however, is the blocksize crisis.
At the moment, new blocks are being created once every 8 minutes or so, which has helped immensely in handling the recent surge of transactions. This crutch will be going away on Friday.
Assuming the heavy transaction volume continues, which seems likely given recent BTC/USD action, this upcoming difficulty change could end up being the loudest alarm bell to date with respect to the desperate need to resolve bitcoin's crippling capacity limitation.
Happily, it is the sort of alarm that rings across all languages barriers. We can hope that this one will be heeded.
submitted by Thanah85 to bitcoinxt [link] [comments]

A full explanation of what Antpool is doing, how it harms the network, and what should be done (if anything) to make it irrelevant.

Hey bitcoin
I saw a lot of people with the same questions about AntPool and what's happening. I had to dig hard to find halfway decent answers at times, and other times there was some hefty misinformation and unwarranted FUD in some corners. This is instead, a full explanation of what is happening and why you should and shouldn't be worried.

Why is AntPool mining tiny blocks?
This is an attack of sorts on bitcoin, but not in a straightforward manner. There is no immediate increase of fees because these blocks exist. In fact, all it means is that currently the network is mining with hashrate:
H - A 
where H is the total hashrate and A is the hashrate of AntPool. AntPool doesn't change the overall hashrate of those cooperating with Bitcoin.

If it doesn't effect transaction fees or times, why should I be worried?
The long-term stability of the network is where this attack comes into play. The difficulty is re-targeted every 2016 blocks to make sure the difficulty stays as close to 10 minutes as possible. The AntPool blocks, despite their lack of transaction processing, will be included in this count. That means that as long as there are malicious miners, the effective transaction throughput will be:
10 min * (H / (H - A)) 
This is after re-targeting and if the attack has been going on for the entire 2016 block timeframe.

Is this economically viable for miners?
Perhaps, but to be a miner on AntPool, you'd have to be pretty much all-in on the other side of the chain with substantial holdings. The block reward is currently 12.5 bitcoin and there are around 4 bitcoin in transaction fees per block.
if you decide to mine sub-optimally, you miss out on around $16k USD of effective reward for the transaction fees alone. That one block alone isn't going to vastly change the price, but mining a high percentage of blocks throughout the re-targeting period will. Let's say they effectively manage to mine 20% of blocks, that would be a transaction cost loss of around USD $6 Million for a mere 20% loss of network hashrate. While the network will be slower, you'd have to hold tens to hundreds of thousands of coins on the alternate chain for this attack to be viable.

I noticed that AntPool doesn't always mine empty blocks, what gives?
I noticed the same thing. Check over here: https://blockchain.info/blocks
Sometimes AntPool mines a full block, sometimes they mine a partial block, and somtimes they mine an empty block.
There's a chance that AntPool found a way to optimize hash hits by cycling number of transactions first instead of the nonce variable. (I can't for the life of me see how this optimization would be any quicker.) In any case, if this is what's happening, then the average AntPool block would be half as large as the average.
The more likely possibility is that AntPool has 2 different versions of the mining software where you can opt-in to being malicious or they can turn it on and off at will or some systems had a mining error that fails to process transactions but still hashes.

What can be done?
Honestly, I don't think this will be a problem long-term. It's just (probably) not economically viable unless AntPool is trying to get enough miners off the main chain to take it over and run a 50% attack... Which will be very hard and still economically costly. If AntPool continues sub-optimal mining, a lot of miners will likely leave for a better (honest) pool.

If this becomes a serious problem, what should be done?
Honestly, adding a check-able hashed variable like:
isMemFull 
to each block would be as ideal as possible. The check algorithm could have a pool factor like 1.5 or 2 so a few non-propagated transactions don't pull a false negative. This could even eat a bit of the signature field to keep block size the exact same.
if(isMemFull = 1 && memPoolSize >= 1.5Mb) {acceptBlock()}; if(isMemFull = 0) {acceptBlock()}; else {rejectBlock()}; 
The only difference is if the 1.5 or 2 factor is met in a local transaction pool, the miner would reject blocks with a 0 in the field.
When recalculating difficulty, the network would not count non-full blocks where the bit is set towards the difficulty. This would mean that the only time the difficulty could be tampered with is when the mempool is 1Mb - 2Mb (max)

Wouldn't that require a hard-fork?
I unfortunately can't envision a way to implement without hard-forking, but the massive upside to this is that the difficulty of the (new) main chain would be lower overall so that miners who don't cooperate would be increasingly squeezed out of the old chain.
The good news is... it likely doesn't matter. I'm relatively certain AntPool will have to mine at an economic deficit for too long for it to have any net positive for them.

Edit 2
After thinking more about it, the new chain would still be valid on the other side - especially if old data locations were used such as the LSB of sig. Technically, this WOULD only be a soft fork because the older systems that find a block would have to orphan and swap to the new chain when they inevitably encounter a longer chain.
user69213 may have a point that dummy transactions may be used in attack. I'll have to look back into how and when transactions are validated, but I think he does have a point. Still, other changes would also be sufficient to overcome this hurtle like PoW. (Although ASIC miners won't be happy about that and it would be a definitive hard-fork)

TL;DR: What AntPool is doing will likely have no long-term effect on Bitcoin, and if it does, there are at least some ways to make it not matter.
Edit - Minor Text Fixes
submitted by CaptainPatent to Bitcoin [link] [comments]

Crypto currency introduction - conversion from coin to US dollar What Will Happen to Bitcoin in 100 Years SELLING BITCOIN FOR USD! GDAX LIVE! nonce How to transfer BTC to USD (PayPal) - YouTube

BTC USD (Bitcoin / US Dollar) This is the most popular Bitcoin pair in the world. Bitcoin uses peer-to-peer technology to operate with no central authority or banks; managing transactions and the issuing of Bitcoins is carried out collectively by the network. Bitcoin is open-source; its design is public, nobody owns or controls this cryptocurrency and everyone can take part. Bitcoin price grew ... XRP/USD is currently rebounding slightly to trade at $0.286. The coin has been bouncing above and below $0.30 since the beginning of this month, and a clean daily candle close above $0.321 could ... Bitcoin (BTC/USD) is back in the green zone above the 13,000 level this Monday, reversing a temporary reversal seen on Sunday. The No. 1 coin is seen testing daily highs, looking to retest Sunday ... Bitcoin fiel auf einen Tiefststand von 9.550 USD und hat bei Erstellung dieses Artikels einen Kurs von 9.621 USD. Wie hier im Blog berichtet, wurden kürzlich 50 Bitcoins, die im ersten Monat des Bestehens von Bitcoin abgebaut wurden, im Wert von 500.000 USD bewegt. Bitcoin blocks a mined by computing power that attaches a hash to a nonce with the goal of getting a SHA256 output that begins with a predetermined amount of zeros. That is referred to as Bitcoin’s difficulty. As more zeros are required at the beginning of the hash output, this lowers the odds of finding the right output which requires more hashes (more difficulty) to mine the block. For ...

[index] [17734] [35273] [44595] [20341] [46524] [38093] [47314] [1327] [20314] [31678]

Crypto currency introduction - conversion from coin to US dollar

USD to Bitcoin with credit card: https://goo.gl/osRqWu without identity! bit with high usd / bitcoin rate! ethereum address: https://goo.gl/J36KaS Best BOOK for how to buy bitcoin: "Bitcoin for ... So many people ask me how hard it is to sell Bitcoin for USD once you invest.... Its really not that hard to do! Using GDAX or Coinbase you can quickly sell ... blockchain primer - Merkle Tree, DAG, Consensus, Nonce, ... Resources: The great BOOK: "Mastering Bitcoin": http://amzn.to/2BqmgNI * Home page: https://tomer... Easily transfer your bitcoins in dollars to your PayPal account. Virwox: https://www.virwox.com/ Facebook: https://www.facebook.com/kiduxofficial/ Website: h... On todays episode of how to spot a nonce we expose Jake.Tune in next time to learn how to spot an emo nonce.

#