Data Structure of Bitcoin Block - Herong Yang

Gridcoin 5.0.0.0-Mandatory "Fern" Release

https://github.com/gridcoin-community/Gridcoin-Research/releases/tag/5.0.0.0
Finally! After over ten months of development and testing, "Fern" has arrived! This is a whopper. 240 pull requests merged. Essentially a complete rewrite that was started with the scraper (the "neural net" rewrite) in "Denise" has now been completed. Practically the ENTIRE Gridcoin specific codebase resting on top of the vanilla Bitcoin/Peercoin/Blackcoin vanilla PoS code has been rewritten. This removes the team requirement at last (see below), although there are many other important improvements besides that.
Fern was a monumental undertaking. We had to encode all of the old rules active for the v10 block protocol in new code and ensure that the new code was 100% compatible. This had to be done in such a way as to clear out all of the old spaghetti and ring-fence it with tightly controlled class implementations. We then wrote an entirely new, simplified ruleset for research rewards and reengineered contracts (which includes beacon management, polls, and voting) using properly classed code. The fundamentals of Gridcoin with this release are now on a very sound and maintainable footing, and the developers believe the codebase as updated here will serve as the fundamental basis for Gridcoin's future roadmap.
We have been testing this for MONTHS on testnet in various stages. The v10 (legacy) compatibility code has been running on testnet continuously as it was developed to ensure compatibility with existing nodes. During the last few months, we have done two private testnet forks and then the full public testnet testing for v11 code (the new protocol which is what Fern implements). The developers have also been running non-staking "sentinel" nodes on mainnet with this code to verify that the consensus rules are problem-free for the legacy compatibility code on the broader mainnet. We believe this amount of testing is going to result in a smooth rollout.
Given the amount of changes in Fern, I am presenting TWO changelogs below. One is high level, which summarizes the most significant changes in the protocol. The second changelog is the detailed one in the usual format, and gives you an inkling of the size of this release.

Highlights

Protocol

Note that the protocol changes will not become active until we cross the hard-fork transition height to v11, which has been set at 2053000. Given current average block spacing, this should happen around October 4, about one month from now.
Note that to get all of the beacons in the network on the new protocol, we are requiring ALL beacons to be validated. A two week (14 day) grace period is provided by the code, starting at the time of the transition height, for people currently holding a beacon to validate the beacon and prevent it from expiring. That means that EVERY CRUNCHER must advertise and validate their beacon AFTER the v11 transition (around Oct 4th) and BEFORE October 18th (or more precisely, 14 days from the actual date of the v11 transition). If you do not advertise and validate your beacon by this time, your beacon will expire and you will stop earning research rewards until you advertise and validate a new beacon. This process has been made much easier by a brand new beacon "wizard" that helps manage beacon advertisements and renewals. Once a beacon has been validated and is a v11 protocol beacon, the normal 180 day expiration rules apply. Note, however, that the 180 day expiration on research rewards has been removed with the Fern update. This means that while your beacon might expire after 180 days, your earned research rewards will be retained and can be claimed by advertising a beacon with the same CPID and going through the validation process again. In other words, you do not lose any earned research rewards if you do not stake a block within 180 days and keep your beacon up-to-date.
The transition height is also when the team requirement will be relaxed for the network.

GUI

Besides the beacon wizard, there are a number of improvements to the GUI, including new UI transaction types (and icons) for staking the superblock, sidestake sends, beacon advertisement, voting, poll creation, and transactions with a message. The main screen has been revamped with a better summary section, and better status icons. Several changes under the hood have improved GUI performance. And finally, the diagnostics have been revamped.

Blockchain

The wallet sync speed has been DRASTICALLY improved. A decent machine with a good network connection should be able to sync the entire mainnet blockchain in less than 4 hours. A fast machine with a really fast network connection and a good SSD can do it in about 2.5 hours. One of our goals was to reduce or eliminate the reliance on snapshots for mainnet, and I think we have accomplished that goal with the new sync speed. We have also streamlined the in-memory structures for the blockchain which shaves some memory use.
There are so many goodies here it is hard to summarize them all.
I would like to thank all of the contributors to this release, but especially thank @cyrossignol, whose incredible contributions formed the backbone of this release. I would also like to pay special thanks to @barton2526, @caraka, and @Quezacoatl1, who tirelessly helped during the testing and polishing phase on testnet with testing and repeated builds for all architectures.
The developers are proud to present this release to the community and we believe this represents the starting point for a true renaissance for Gridcoin!

Summary Changelog

Accrual

Changed

Most significantly, nodes calculate research rewards directly from the magnitudes in EACH superblock between stakes instead of using a two- or three- point average based on a CPID's current magnitude and the magnitude for the CPID when it last staked. For those long-timers in the community, this has been referred to as "Superblock Windows," and was first done in proof-of-concept form by @denravonska.

Removed

Beacons

Added

Changed

Removed

Unaltered

As a reminder:

Superblocks

Added

Changed

Removed

Voting

Added

Changed

Removed

Detailed Changelog

[5.0.0.0] 2020-09-03, mandatory, "Fern"

Added

Changed

Removed

Fixed

submitted by jamescowens to gridcoin [link] [comments]

What unites Bitcoin, gold, and Apple shares? — TkeyNet

What unites Bitcoin, gold, and Apple shares? — TkeyNet

https://preview.redd.it/ctpbqg8jbjg51.png?width=700&format=png&auto=webp&s=f7337e416de7124455dd5d072b5ee529067af6b3
Today we will briefly review the main points that will clarify the upcoming changes in the TKEY project.
If you missed previous publications about TkeyNet, be sure to read them:

Future changes to the TKEY project

TKEY Asset

Just like the first Protocol (Core 1.0), the TKEY asset used in the TkeyNet network — there are no changes in this plan. After launching TkeyNet, you can transfer TKEY to any user on the TKEY network without any restrictions.

Quick transactions

Transactions in TkeyNet will be much faster than it was before. You can check it in practice.

TkeyConnect Module

The Protocol has a built-in TkeyConnect module, which allows you to connect various blockchains to our network to conduct transactions directly in the TkeyNet blockchain. Besides, TkeyConnect meets the international ISO and ISIN standards, which also allows you to conduct transactions with Fiat currencies and shares in the TkeyNet blockchain.
TkeyConnect creates a flexible system, giving users the ability to store and conduct transactions in any assets, be it Bitcoin, Ethereum, Litecoin or dollars, euros, etc.
https://preview.redd.it/rkroh5ulbjg51.png?width=700&format=png&auto=webp&s=c47a094c9ae3d22131bebea80badafd0dd1f8dd6

New software

If the previous software based on the Core 1.0 Protocol, after switching to TkeyNet, wallets, a blockchain search engine, and other software related to the project will be adapted to the new Protocol.

Contact information and support service

Email addresses of the support service and other departments will be transferred to other service providers and will structure in the following areas: B2B and B2C. The list of email addresses will publish after updates are complete.
B2B (business-to-business) a term that means that a company or a division of a company sells its goods/services to corporate clients, that is, to other companies. B2C (business-to-consumer) is a term that refers to the commercial relationship between an organization (Business) and a private, so-called “end” consumer.

Websites

Information about the project, the company, and its products will subdivide into two websites: tkeycoin.com and tkey.org. The purpose of this division is to simplify product navigation, improve the appearance of pages for each product and solution, and update content.
The solution is modular. The information will be structured according to sections and sites, dividing the corporate and user segments. As the products develop, the information will be updated.
Technical specifications, documentation, and a description of the Protocol and its features will appear on the official website: tkey.org. Sections will fill in gradually.

Testing and launching TkeyNet

Between July 22 and July 24, Telnet was successfully launched in testnet mode. Our team is actively testing the entire TkeyNet network and its functions. The system is tested with different scenarios, its effectiveness is checked when working with high loads, and the security of the entire system is audited. Testing of TkeyNet is an important stage of production aimed at detailed research of the program code and identification of errors in the system operation. Comprehensive testing, which is carried out by our team, is necessary to determine the level of readiness of the system for subsequent operation. Testing is based on a set of test scenarios that cover the main business operations.
The testing process contains all the life cycle activities: dynamic and static indicators. The testing process involves planning, preparing, and evaluating a software product. The purpose of testing is to determine that all meet the requirements described, as well as to show that they are suitable for the stated purposes and for detecting errors.

The Digital Asset Exchange

After launching TkeyNet — we will publish the start date of trading on the exchange. Information is available in the official notification: https://tkeycoin.com/en/news/.
https://preview.redd.it/moap4drobjg51.png?width=700&format=png&auto=webp&s=3fbb1ac32741806c8c2c59081e5e14266ac9a2fe

FAQ

Buying and selling TKEY

You can buy or sell TKEY only on the exchange and not in any other source. Private transactions are subject to high risks. Once again, we remind you that at the time of updates, any transactions with TKEY will be invalid.

Safety of funds

If you use a local wallet on your computer, make a backup copy of the wallet.dat file. If you use a TkeySpace mobile wallet, make a backup copy of the private key (backup phrase).

Transactions before updates are completed

During updates-no transactions can be made on the network, which means that any private dealing made at the time of updates will be invalid. Additionally, we ask you to refrain from any actions related to TKEY until the end of updates protocol, including starting mining, local wallets, and reinstalling them.

Epilogue

Testing of the system and its functions takes place in a stable mode without days off. The test results that will receive at the end of this week will reflect the current state of Affairs. We will get up-to-date information about the end date of updates and the planned release date of TkeyNet.
An announcement of interim test results, as well as future updates, will be published at the end of this week or early next.
submitted by tkeycoin to Tkeycoin_Official [link] [comments]

Groestlcoin 6th Anniversary Release

Introduction

Dear Groestlers, it goes without saying that 2020 has been a difficult time for millions of people worldwide. The groestlcoin team would like to take this opportunity to wish everyone our best to everyone coping with the direct and indirect effects of COVID-19. Let it bring out the best in us all and show that collectively, we can conquer anything.
The centralised banks and our national governments are facing unprecedented times with interest rates worldwide dropping to record lows in places. Rest assured that this can only strengthen the fundamentals of all decentralised cryptocurrencies and the vision that was seeded with Satoshi's Bitcoin whitepaper over 10 years ago. Despite everything that has been thrown at us this year, the show must go on and the team will still progress and advance to continue the momentum that we have developed over the past 6 years.
In addition to this, we'd like to remind you all that this is Groestlcoin's 6th Birthday release! In terms of price there have been some crazy highs and lows over the years (with highs of around $2.60 and lows of $0.000077!), but in terms of value– Groestlcoin just keeps getting more valuable! In these uncertain times, one thing remains clear – Groestlcoin will keep going and keep innovating regardless. On with what has been worked on and completed over the past few months.

UPDATED - Groestlcoin Core 2.18.2

This is a major release of Groestlcoin Core with many protocol level improvements and code optimizations, featuring the technical equivalent of Bitcoin v0.18.2 but with Groestlcoin-specific patches. On a general level, most of what is new is a new 'Groestlcoin-wallet' tool which is now distributed alongside Groestlcoin Core's other executables.
NOTE: The 'Account' API has been removed from this version which was typically used in some tip bots. Please ensure you check the release notes from 2.17.2 for details on replacing this functionality.

How to Upgrade?

Windows
If you are running an older version, shut it down. Wait until it has completely shut down (which might take a few minutes for older versions), then run the installer.
OSX
If you are running an older version, shut it down. Wait until it has completely shut down (which might take a few minutes for older versions), run the dmg and drag Groestlcoin Core to Applications.
Ubuntu
http://groestlcoin.org/forum/index.php?topic=441.0

Other Linux

http://groestlcoin.org/forum/index.php?topic=97.0

Download

Download the Windows Installer (64 bit) here
Download the Windows Installer (32 bit) here
Download the Windows binaries (64 bit) here
Download the Windows binaries (32 bit) here
Download the OSX Installer here
Download the OSX binaries here
Download the Linux binaries (64 bit) here
Download the Linux binaries (32 bit) here
Download the ARM Linux binaries (64 bit) here
Download the ARM Linux binaries (32 bit) here

Source

ALL NEW - Groestlcoin Moonshine iOS/Android Wallet

Built with React Native, Moonshine utilizes Electrum-GRS's JSON-RPC methods to interact with the Groestlcoin network.
GRS Moonshine's intended use is as a hot wallet. Meaning, your keys are only as safe as the device you install this wallet on. As with any hot wallet, please ensure that you keep only a small, responsible amount of Groestlcoin on it at any given time.

Features

Download

iOS
Android

Source

ALL NEW! – HODL GRS Android Wallet

HODL GRS connects directly to the Groestlcoin network using SPV mode and doesn't rely on servers that can be hacked or disabled.
HODL GRS utilizes AES hardware encryption, app sandboxing, and the latest security features to protect users from malware, browser security holes, and even physical theft. Private keys are stored only in the secure enclave of the user's phone, inaccessible to anyone other than the user.
Simplicity and ease-of-use is the core design principle of HODL GRS. A simple recovery phrase (which we call a Backup Recovery Key) is all that is needed to restore the user's wallet if they ever lose or replace their device. HODL GRS is deterministic, which means the user's balance and transaction history can be recovered just from the backup recovery key.

Features

Download

Main Release (Main Net)
Testnet Release

Source

ALL NEW! – GroestlcoinSeed Savior

Groestlcoin Seed Savior is a tool for recovering BIP39 seed phrases.
This tool is meant to help users with recovering a slightly incorrect Groestlcoin mnemonic phrase (AKA backup or seed). You can enter an existing BIP39 mnemonic and get derived addresses in various formats.
To find out if one of the suggested addresses is the right one, you can click on the suggested address to check the address' transaction history on a block explorer.

Features

Live Version (Not Recommended)

https://www.groestlcoin.org/recovery/

Download

https://github.com/Groestlcoin/mnemonic-recovery/archive/master.zip

Source

ALL NEW! – Vanity Search Vanity Address Generator

NOTE: NVidia GPU or any CPU only. AMD graphics cards will not work with this address generator.
VanitySearch is a command-line Segwit-capable vanity Groestlcoin address generator. Add unique flair when you tell people to send Groestlcoin. Alternatively, VanitySearch can be used to generate random addresses offline.
If you're tired of the random, cryptic addresses generated by regular groestlcoin clients, then VanitySearch is the right choice for you to create a more personalized address.
VanitySearch is a groestlcoin address prefix finder. If you want to generate safe private keys, use the -s option to enter your passphrase which will be used for generating a base key as for BIP38 standard (VanitySearch.exe -s "My PassPhrase" FXPref). You can also use VanitySearch.exe -ps "My PassPhrase" which will add a crypto secure seed to your passphrase.
VanitySearch may not compute a good grid size for your GPU, so try different values using -g option in order to get the best performances. If you want to use GPUs and CPUs together, you may have best performances by keeping one CPU core for handling GPU(s)/CPU exchanges (use -t option to set the number of CPU threads).

Features

Usage

https://github.com/Groestlcoin/VanitySearch#usage

Download

Source

ALL NEW! – Groestlcoin EasyVanity 2020

Groestlcoin EasyVanity 2020 is a windows app built from the ground-up and makes it easier than ever before to create your very own bespoke bech32 address(es) when whilst not connected to the internet.
If you're tired of the random, cryptic bech32 addresses generated by regular Groestlcoin clients, then Groestlcoin EasyVanity2020 is the right choice for you to create a more personalised bech32 address. This 2020 version uses the new VanitySearch to generate not only legacy addresses (F prefix) but also Bech32 addresses (grs1 prefix).

Features

Download

Source

Remastered! – Groestlcoin WPF Desktop Wallet (v2.19.0.18)

Groestlcoin WPF is an alternative full node client with optional lightweight 'thin-client' mode based on WPF. Windows Presentation Foundation (WPF) is one of Microsoft's latest approaches to a GUI framework, used with the .NET framework. Its main advantages over the original Groestlcoin client include support for exporting blockchain.dat and including a lite wallet mode.
This wallet was previously deprecated but has been brought back to life with modern standards.

Features

Remastered Improvements

Download

Source

ALL NEW! – BIP39 Key Tool

Groestlcoin BIP39 Key Tool is a GUI interface for generating Groestlcoin public and private keys. It is a standalone tool which can be used offline.

Features

Download

Windows
Linux :
 pip3 install -r requirements.txt python3 bip39\_gui.py 

Source

ALL NEW! – Electrum Personal Server

Groestlcoin Electrum Personal Server aims to make using Electrum Groestlcoin wallet more secure and more private. It makes it easy to connect your Electrum-GRS wallet to your own full node.
It is an implementation of the Electrum-grs server protocol which fulfils the specific need of using the Electrum-grs wallet backed by a full node, but without the heavyweight server backend, for a single user. It allows the user to benefit from all Groestlcoin Core's resource-saving features like pruning, blocks only and disabled txindex. All Electrum-GRS's feature-richness like hardware wallet integration, multi-signature wallets, offline signing, seed recovery phrases, coin control and so on can still be used, but connected only to the user's own full node.
Full node wallets are important in Groestlcoin because they are a big part of what makes the system be trust-less. No longer do people have to trust a financial institution like a bank or PayPal, they can run software on their own computers. If Groestlcoin is digital gold, then a full node wallet is your own personal goldsmith who checks for you that received payments are genuine.
Full node wallets are also important for privacy. Using Electrum-GRS under default configuration requires it to send (hashes of) all your Groestlcoin addresses to some server. That server can then easily spy on your transactions. Full node wallets like Groestlcoin Electrum Personal Server would download the entire blockchain and scan it for the user's own addresses, and therefore don't reveal to anyone else which Groestlcoin addresses they are interested in.
Groestlcoin Electrum Personal Server can also broadcast transactions through Tor which improves privacy by resisting traffic analysis for broadcasted transactions which can link the IP address of the user to the transaction. If enabled this would happen transparently whenever the user simply clicks "Send" on a transaction in Electrum-grs wallet.
Note: Currently Groestlcoin Electrum Personal Server can only accept one connection at a time.

Features

Download

Windows
Linux / OSX (Instructions)

Source

UPDATED – Android Wallet 7.38.1 - Main Net + Test Net

The app allows you to send and receive Groestlcoin on your device using QR codes and URI links.
When using this app, please back up your wallet and email them to yourself! This will save your wallet in a password protected file. Then your coins can be retrieved even if you lose your phone.

Changes

Download

Main Net
Main Net (FDroid)
Test Net

Source

UPDATED – Groestlcoin Sentinel 3.5.06 (Android)

Groestlcoin Sentinel is a great solution for anyone who wants the convenience and utility of a hot wallet for receiving payments directly into their cold storage (or hardware wallets).
Sentinel accepts XPUB's, YPUB'S, ZPUB's and individual Groestlcoin address. Once added you will be able to view balances, view transactions, and (in the case of XPUB's, YPUB's and ZPUB's) deterministically generate addresses for that wallet.
Groestlcoin Sentinel is a fork of Groestlcoin Samourai Wallet with all spending and transaction building code removed.

Changes

Download

Source

UPDATED – P2Pool Test Net

Changes

Download

Pre-Hosted Testnet P2Pool is available via http://testp2pool.groestlcoin.org:21330/static/

Source

submitted by Yokomoko_Saleen to groestlcoin [link] [comments]

An extensive guide for cashing out bitcoin and cryptocurrencies into private banks

Hey guys.
Merry Xmas !
I am coming back to you with a follow up post, as I have helped many people cash out this year and I have streamlined the process. After my original post, I received many requests to be more specific and provide more details. I thought that after the amazing rally we have been attending over the last few months, and the volatility of the last few days, it would be interesting to revisit more extensively.
The attitude of banks around crypto is changing slowly, but it is still a tough stance. For the first partial cash out I operated around a year ago for a client, it took me months to find a bank. They wouldn’t want to even consider the case and we had to knock at each and every door. Despite all my contacts it was very difficult back in the days. This has changed now, and banks have started to open their doors, but there is a process, a set of best practices and codes one has to follow.
I often get requests from crypto guys who are very privacy-oriented, and it takes me months to have them understand that I am bound by Swiss law on banking secrecy, and I am their ally in this onboarding process. It’s funny how I have to convince people that banks are legit, while on the other side, banks ask me to show that crypto millionaires are legit. I have a solid background in both banking and in crypto so I manage to make the bridge, but yeah sometimes it is tough to reconcile the two worlds. I am a crypto enthusiast myself and I can say that after years of work in the banking industry I have grown disillusioned towards banks as well, like many of you. Still an account in a Private bank is convenient and powerful. So let’s get started.
There are two different aspects to your onboarding in a Swiss Private bank, compliance-wise.
*The origin of your crypto wealth
*Your background (residence, citizenship and probity)
These two aspects must be documented in-depth.
How to document your crypto wealth. Each new crypto millionaire has a different story. I may detail a few fun stories later in this post, but at the end of the day, most of crypto rich I have met can be categorized within the following profiles: the miner, the early adopter, the trader, the corporate entity, the black market, the libertarian/OTC buyer. The real question is how you prove your wealth is legit.
1. Context around the original amount/investment Generally speaking, your first crypto purchase may not be documented. But the context around this acquisition can be. I have had many cases where the original amount was bought through Mtgox, and no proof of purchase could be provided, nor could be documented any Mtgox claim. That’s perfectly fine. At some point Mtgox amounted 70% of the bitcoin transactions globally, and people who bought there and managed to withdraw and keep hold of their bitcoins do not have any Mtgox claim. This is absolutely fine. However, if you can show me the record of a wire from your bank to Tisbane (Mtgox's parent company) it's a great way to start.
Otherwise, what I am trying to document here is the following: I need context. If you made your first purchase by saving from summer jobs, show me a payroll. Even if it was USD 2k. If you acquired your first bitcoins from mining, show me the bills of your mining equipment from 2012 or if it was through a pool mine, give me your slushpool account ref for instance. If you were given bitcoin against a service you charged, show me an invoice.
2. Tracking your wealth until today and making sense of it. What I have been doing over the last few months was basically educating compliance officers. Thanks God, the blockchain is a global digital ledger! I have been telling my auditors and compliance officers they have the best tool at their disposal to lead a proper investigation. Whether you like it or not, your wealth can be tracked, from address to address. You may have thought all along this was a bad feature, but I am telling you, if you want to cash out, in the context of Private Banking onboarding, tracking your wealth through the block explorer is a boon. We can see the inflows, outflows. We can see the age behind an address. An early adopter who bought 1000 BTC in 2010, and let his bitcoin behind one address and held thus far is legit, whether or not he has a proof of purchase to show. That’s just common sense. My job is to explain that to the banks in a language they understand.
Let’s have a look at a few examples and how to document the few profiles I mentioned earlier.
The trader. I love traders. These are easy cases. I have a ton of respect for them. Being a trader myself in investment banks for a decade earlier in my career has taught me that controlling one’s emotions and having the discipline to impose oneself some proper risk management system is really really hard. Further, being able to avoid the exchange bankruptcy and hacks throughout crypto history is outstanding. It shows real survival instinct, or just plain blissed ignorance. In any cases traders at exchange are easy cases to corroborate since their whole track record is potentially available. Some traders I have met have automated their trading and have shown me more than 500k trades done over the span of 4 years. Obviously in this kind of scenario I don’t show everything to the bank to avoid information overload, and prefer to do some snacking here and there. My strategy is to show the early trades, the most profitable ones, explain the trading strategy and (partially expose) the situation as of now with id pages of the exchanges and current balance. Many traders have become insensitive to the risk of parking their crypto at exchange as they want to be able to trade or to grasp an occasion any minute, so they generally do not secure a substantial portion on the blockchain which tends to make me very nervous.
The early adopter. Provided that he has not mixed his coin, the early adopter or “hodler” is not a difficult case either. Who cares how you bought your first 10k btc if you bought them below 3$ ? Even if you do not have a purchase proof, I would generally manage to find ways. We just have to corroborate the original 30’000 USD investment in this case. I mainly focus on three things here:
*proof of early adoption I have managed to educate some banks on a few evidences specifically related to crypto markets. For instance with me, an old bitcointalk account can serve as a proof of early adoption. Even an old reddit post from a few years ago where you say how much you despise this Ripple premined scam can prove to be a treasure readily available to show you were early.
*story telling Compliance officers like to know when, why and how. They are human being looking for simple answers to simple questions and they don’t want like to be played fool. Telling the truth, even without a proof can do wonders, and even though bluffing might still work because banks don’t fully understand bitcoin yet, it is a risky strategy that is less and less likely to pay off as they are getting more sophisticated by the day.
*micro transaction from an old address you control This is the killer feature. Send a $20 worth transaction from an old address to my company wallet and to one of my partner bank’s wallet and you are all set ! This is gold and considered a very solid piece of evidence. You can also do a microtransaction to your own wallet, but banks generally prefer transfer to their own wallet. Patience with them please. they are still learning.
*signature message Why do a micro transaction when you can sign a message and avoid potentially tainting your coins ?
*ICO millionaire Some clients made their wealth participating in ETH crowdsale or IOTA ICO. They were very easy to deal with obviously and the account opening was very smooth since we could evidence the GENESIS TxHash flow.
The miner Not so easy to proof the wealth is legit in that case. Most early miners never took screenshot of the blocks on bitcoin core, nor did they note down the block number of each block they mined. Until the the Slashdot article from August 2010 anyone could mine on his laptop, let his computer run overnight and wake up to a freshly minted block containing 50 bitcoins back in the days. Not many people were structured enough to store and secure these coins, avoid malwares while syncing the blockchain continuously, let alone document the mined blocks in the process. What was 50 BTC worth really for the early miners ? dust of dollars, games and magic cards… Even miners post 2010 are generally difficult to deal with in terms of compliance onboarding. Many pool mining are long dead. Deepbit is down for instance and the founders are MIA. So my strategy to proof mining activity is as follow:
*Focusing on IT background whenever possible. An IT background does help a lot to bring some substance to the fact you had the technical ability to operate a mining rig.
*Showing mining equipment receipts. If you mined on your own you must have bought the hardware to do so. For instance mining equipment receipts from butterfly lab from 2012-2013 could help document your case. Similarly, high electricity bill from your household on a consistent basis back in the day could help. I have already unlocked a tricky case in the past with such documents when the bank was doubtful.
*Wallet.dat files with block mining transactions from 2011 thereafter This obviously is a fantastic piece of evidence for both you and me if you have an old wallet and if you control an address that received original mined blocks, (even if the wallet is now empty). I will make sure compliance officers understand what it means, and as for the early adopter, you can prove your control over these wallet through a microtransaction. With these kind of addresses, I can show on the block explorer the mined block rewards hitting at regular time interval, and I can even spot when difficulty level increased or when halvening process happened.
*Poolmining account. Here again I have educated my partner bank to understand that a slush account opened in 2013 or an OnionTip presence was enough to corroborate mining activity. The block explorer then helps me to do the bridge with your current wallet.
*Describing your set up and putting it in context In the history of mining we had CPU, GPU, FPG and ASICs mining. I will describe your technical set up and explain why and how your set up was competitive at that time.
The corporate entity Remember 2012 when we were all convinced bitcoin would take over the world, and soon everyone would pay his coffee in bitcoin? How naïve we were to think transaction fees would remain low forever. I don’t blame bitcoin cash supporters; I once shared this dream as well. Remember when we thought global adoption was right around the corner and some brick and mortar would soon accept bitcoin transaction as a common mean of payment? Well, some shop actually did accept payment and held. I had a few cases as such of shops holders, who made it to the multi million mark holding and had invoices or receipts to proof the transactions. If you are organized enough to keep a record for these trades and are willing to cooperate for the documentation, you are making your life easy. The digital advertising business is also a big market for the bitcoin industry, and affiliates partner compensated in btc are common. It is good to show an invoice, it is better to show a contract. If you do not have a contract (which is common since all advertising deals are about ticking a check box on the website to accept terms and conditions), there are ways around that. If you are in that case, pm me.
The black market Sorry guys, I can’t do much for you officially. Not that I am judging you. I am a libertarian myself. It’s just already very difficult to onboard legit btc adopters, so the black market is a market I cannot afford to consider. My company is regulated so KYC and compliance are key for me if I want to stay in business. Behind each case I push forward I am risking the credibility and reputation I have built over the years. So I am sorry guys I am not risking it to make an extra buck. Your best hope is that crypto will eventually take over the world and you won’t need to cash out anyway. Or go find a Lithuanian bank that is light on compliance and cooperative.
The OTC buyer and the libertarian. Generally a very difficult case. If you bought your stack during your journey in Japan 5 years ago to a guy you never met again; or if you accumulated on https://localbitcoins.com/ and kept no record or lost your account, it is going to be difficult. Not impossible but difficult. We will try to build a case with everything else we have, and I may be able to onboard you. However I am risking a lot here so I need to be 100% confident you are legit, before I defend you. Come & see me in Geneva, and we will talk. I will run forensic services like elliptic, chainalysis, or scorechain on an extract of your wallet. If this scan does not raise too many red flags, then maybe we can work together ! If you mixed your coins all along your crypto history, and shredded your seeds because you were paranoid, or if you made your wealth mining professionally monero over the last 3 years but never opened an account at an exchange. ¯_(ツ)_/¯ I am not a magician and don’t get me wrong, I love monero, it’s not the point.
Cashing out ICOs Private companies or foundations who have ran an ICO generally have a very hard time opening a bank account. The few banks that accept such projects would generally look at 4 criteria:
*Seriousness of the project Extensive study of the whitepaper to limit the reputation risk
*AML of the onboarding process ICOs 1.0 have no chance basically if a background check of the investors has not been conducted
*Structure of the moral entity List of signatories, certificate of incumbency, work contract, premises...
*Fiscal conformity Did the company informed the authorities and seek a fiscal ruling.
For the record, I am not into the tax avoidance business, so people come to me with a set up and I see if I can make it work within the legal framework imposed to me.
First, stop thinking Switzerland is a “offshore heaven” Swiss banks have made deals with many governments for the exchange of fiscal information. If you are a French citizen, resident in France and want to open an account in a Private Bank in Switzerland to cash out your bitcoins, you will get slaughtered (>60%). There are ways around that, and I could refer you to good tax specialists for fiscal optimization, but I cannot organize it myself. It would be illegal for me. Swiss private banks makes it easy for you to keep a good your relation with your retail bank and continue paying your bills without headaches. They are integrated to SEPA, provide ebanking and credit cards.
For information, these are the kind of set up some of my clients came up with. It’s all legal; obviously I do not onboard clients that are not tax compliant. Further disclaimer: I did not contribute myself to these set up. Do not ask me to organize it for you. I won’t.
EU tricks
Swiss lump sum taxation Foreign nationals resident in Switzerland can be taxed on a lump-sum basis if they are not gainfully employed in our country. Under the lump-sum tax regime, foreign nationals taking residence in Switzerland may choose to pay an expense-based tax instead of ordinary income and wealth tax. Attractive cantons for the lump sum taxation are Zug, Vaud, Valais, Grisons, Lucerne and Berne. To make it short, you will be paying somewhere between 200 and 400k a year and all expenses will be deductible.
Switzerland has adopted a very friendly attitude towards crypto currency in general. There is a whole crypto valley in Zug now. 30% of ICOs are operated in Switzerland. The reason is that Switzerland has thrived for centuries on banking secrecy, and today with FATCA and exchange of fiscal info with EU, banking secrecy is dead. Regulators in Switzerland have understood that digital ledger technologies were a way to roll over this competitive advantage for the generations to come. Switzerland does not tax capital gains on crypto profits. The Finma has a very pragmatic approach. They have issued guidance- updated guidelines here. They let the business get organized and operate their analysis on a case per case basis. Only after getting a deep understanding of the market will they issue a global fintech license in 2019. This approach is much more realistic than legislations which try to regulate everything beforehand.
Italy new tax exemption. It’s a brand new fiscal exemption. Go to Aoste, get residency and you could be taxed a 100k/year for 10years. Yes, really.
Portugal What’s crazy in Europe is the lack of fiscal harmonization. Even if no one in Brussels dares admit it, every other country is doing fiscal dumping. Portugal is such a country and has proved very friendly fiscally speaking. I personally have a hard time trusting Europe. I have witnessed what happened in Greece over the last few years. Some of our ultra high net worth clients got stuck with capital controls. I mean no way you got out of crypto to have your funds confiscated at the next financial crisis! Anyway. FYI
Malta Generally speaking, if you get a residence somewhere you have to live there for a certain period of time. Being stuck in Italy is no big deal with Schengen Agreement, but in Malta it is a different story. In Malta, the ordinary residence scheme is more attractive than the HNWI residence scheme. Being an individual, you can hold a residence permit under this scheme and pay zero income tax in Malta in a completely legal way.
Monaco Not suitable for French citizens, but for other Ultra High Net worth individual, Monaco is worth considering. You need an account at a local bank as a proof of fortune, and this account generally has to be seeded with at least EUR500k. You also need a proof of residence. I do mean UHNI because if you don’t cash out minimum 30m it’s not interesting. Everything is expensive in Monaco. Real Estate is EUR 50k per square meter. A breakfast at Monte Carlo Bay hotel is 70 EUR. Monaco is sunny but sometimes it feels like a golden jail. Do you really want that for your kids?
Dubaï
  1. Set up a company in Dubaï, get your resident card.
  2. Spend one day every 6 month there
  3. ???
  4. Be tax free
US tricks Some Private banks in Geneva do have the license to manage the assets of US persons and U.S citizens. However, do not think it is a way to avoid paying taxes in the US. Opening an account at an authorized Swiss Private banks is literally the same tax-wise as opening an account at Fidelity or at Bank of America in the US. The only difference is that you will avoid all the horror stories. Horror stories are all real by the way. In Switzerland, if you build a decent case and answer all the questions and corroborate your case in depth, you will manage to convince compliance officers beforehand. When the money eventually hits your account, it is actually available and not frozen.
The IRS and FATCA require to file FBAR if an offshore account is open. However FBAR is a reporting requirement and does not have taxes related to holding an account outside the US. The taxes would be the same if the account was in the US. However penalties for non compliance with FBAR are very large. The tax liability management is actually performed through the management of the assets ( for exemple by maximizing long term capital gains and minimizing short term gains).
The case for Porto Rico. Full disclaimer here. I am not encouraging this. Have not collaborated on such tax avoidance schemes. if you are interested I strongly encourage you to seek a tax advisor and get a legal opinion. I am not responsible for anything written below. I am not going to say much because I am so afraid of uncle Sam that I prefer to humbly pass the hot potato to pwc From here all it takes is a good advisor and some creativity to be tax free on your crypto wealth if you are a US person apparently. Please, please please don’t ask me more. And read the disclaimer again.
Trust tricks Generally speaking I do not accept fringe fiscal situation because it puts me in a difficult situation to the banks I work with, and it is already difficult enough to defend a legit crypto case. Trust might be a way to optimize your fiscal situation. Belize. Bahamas. Seychelles. Panama, You name it. At the end of the day, what matters for Swiss Banks are the beneficial owner and the settlor. Get a legal opinion, get it done, and when you eventually knock at a private bank’s door, don’t say it was for fiscal avoidance you stupid ! You will get the door smashed upon you. Be smarter. It will work. My advice is just to have it done by a great tax specialist lawyer, even if it costs you some money, as the entity itself needs to be structured in a professional way. Remember that with trust you are dispossessing yourself off your wealth. Not something to be taken lightly.
“Anonymous” cash out. Right. I think I am not going into this topic, neither expose the ways to get it done. Pm me for details. I already feel a bit uncomfortable with all the info I have provided. I am just going to mention many people fear that crypto exchange might become reporting entities soon, and rightly so. This might happen anyday. You have been warned. FYI, this only works for non-US and large cash out.
The difference between traders an investors. Danmark, Holland and Germany all make a huge difference if you are a passive investor or if you are a trader. ICO is considered investing for instance and is not taxed, while trading might be considered as income and charged aggressively. I would try my best to protect you and put a focus on your investor profile whenever possible, so you don't have to pay 52% tax if you do not have to :D
Full cash out or partial cash out? People who have been sitting on crypto for long have grown an emotional and irrational link with their coins. They come to me and say, look, I have 50m in crypto but I would like to cash out 500k only. So first let me tell you that as a wealth manager my advice to you is to take some off the table. Doing a partial cash out is absolutely fine. The market is bullish. We are witnessing a redistribution of wealth at a global scale. Bitcoin is the real #occupywallstreet, and every one will discuss crypto at Xmas eve which will make the market even more supportive beginning 2018, especially with all hedge funds entering the scene. If you want to stay exposed to bitcoin and altcoins, and believe these techs will change the world, it’s just natural you want to keep some coins. In the meantime, if you have lived off pizzas over the last years, and have the means to now buy yourself an nice house and have an account at a private bank, then f***ing do it mate ! Buy physical gold with this account, buy real estate, have some cash at hands. Even though US dollar is worthless to your eyes, it’s good and convenient to have some. Also remember your wife deserves it ! And if you have no wife yet and you are socially awkward like the rest of us, then maybe cashing out partially will help your situation ;)
What the Private Banks expect. Joke aside, it is important you understand something. If you come around in Zurich to open a bank account and partially cash out, just don’t expect Private Banks will make an exception for you if you are small. You can’t ask them to facilitate your cash out, buy a 1m apartment with the proceeds of the sale, and not leave anything on your current account. It won’t work. Sadly, under 5m you are considered small in private banking. The bank is ok to let you open an account, provided that your kyc and compliance file are validated, but they will also want you to become a client and leave some money there to invest. This might me despicable, but I am just explaining you their rules. If you want to cash out, you should sell enough to be comfortable and have some left. Also expect the account opening to last at least 3-4 week if everything goes well. You can't just open an account overnight.
The cash out logistics. Cashing out 1m USD a day in bitcoin or more is not so hard.
Let me just tell you this: Even if you get a Tier 4 account with Kraken and ask Alejandro there to raise your limit over $100k per day, Even if you have a bitfinex account and you are willing to expose your wealth there, Even if you have managed to pass all the crazy due diligence at Bitstamp,
The amount should be fractioned to avoid risking your full wealth on exchange and getting slaughtered on the price by trading big quantities. Cashing out involves significant risks at all time. There is a security risk of compromising your keys, a counterparty risk, a fat finger risk. Let it be done by professionals. It is worth every single penny.
Most importantly, there is a major difference between trading on an exchange and trading OTC. Even though it’s not publicly disclosed some exchange like Kraken do have OTC desks. Trading on an exchange for a large amount will weight on the prices. Bitcoin is a thin market. In my opinion over 30% of the coins are lost in translation forever. Selling $10m on an exchange in a day can weight on the prices more than you’d think. And if you trade on a exchange, everything is shown on record, and you might wipe out the prices because on exchanges like bitstamp or kraken ultimately your counterparties are retail investors and the market depth is not huge. It is a bit better on Bitfinex. It is way better to trade OTC. Accessing the institutional OTC market is not easy, and that is also the reason why you should ask a regulated financial intermediary if we are talking about huge amounts.
Last point, always chose EUR as opposed to USD. EU correspondent banks won’t generally block institutional amounts. However we had the cases of USD funds frozen or delayed by weeks.
Most well-known OTC desks are Cumberlandmining (ask for Lucas), Genesis (ask for Martin), Bitcoin Suisse AG (ask for Niklas), circletrade, B2C2, or Altcoinomy (ask for Olivier)
Very very large whales can also set up escrow accounts for massive block trades. This world, where blocks over 30k BTC are exchanged between 2 parties would deserve a reddit thread of its own. Crazyness all around.
Your options: DIY or going through a regulated financial intermediary.
Execution trading is a job in itself. You have to be patient, be careful not to wipe out the order book and place limit orders, monitor the market intraday for spikes or opportunities. At big levels, for a large cash out that may take weeks, these kind of details will save you hundred thousands of dollars. I understand crypto holders are suspicious and may prefer to do it by themselves, but there are regulated entities who now offer the services. Besides, being a crypto millionaire is not a guarantee you will get institutional daily withdrawal limits at exchange. You might, but it will take you another round of KYC with them, and surprisingly this round might be even more aggressive that the ones at Private banks since exchange have gone under intense scrutiny by regulators lately.
The fees for cashing out through a regulated financial intermediary to help you with your cash out should be around 1-2% flat on the nominal, not more. And for this price you should get the full package: execution/monitoring of the trades AND onboarding in a private bank. If you are asked more, you are being abused.
Of course, you also have the option to do it yourself. It is a way more tedious and risky process. Compliance with the exchange, compliance with the private bank, trading BTC/fiat, monitoring the transfers…You will save some money but it will take you some time and stress. Further, if you approach a private bank directly, it will trigger a series of red flag to the banks. As I said in my previous post, they call a direct approach a “walk-in”. They will be more suspicious than if you were introduced by someone and won’t hesitate to show you high fees and load your portfolio with in-house products that earn more money to the banks than to you. Remember also most banks still do not understand crypto so you will have a lot of explanations to provide and you will have to start form scratch with them!
The paradox of crypto millionaires Most of my clients who made their wealth through crypto all took massive amount of risks to end up where they are. However, most of them want their bank account to be managed with a low volatility fixed income capital preservation risk profile. This is a paradox I have a hard time to explain and I think it is mainly due to the fact that most are distrustful towards banks and financial markets in general. Many clients who have sold their crypto also have a cash-out blues in the first few months. This is a classic situation. The emotions involved in hodling for so long, the relief that everything has eventually gone well, the life-changing dynamics, the difficulties to find a new motivation in life…All these elements may trigger a post cash-out depression. It is another paradox of the crypto rich who has every card in his hand to be happy, but often feel a bit sad and lonely. Sometimes, even though it’s not my job, I had to do some psychological support. A lot of clients have also become my friends, because we have the same age and went through the same “ordeal”. First world problem I know… Remember, cashing out is not the end. It’s actually the beginning. Don’t look back, don’t regret. Cash out partially, because it does not make sense to cash out in full, regret it and want back in. relax.
The race to cash out crypto billionaire and the concept of late exiter. The Winklevoss brothers are obviously the first of a series. There will be crypto billionaires. Many of them. At a certain level you can have a whole family office working for you to manage your assets and take care of your needs . However, let me tell you it’s is not because you made it so big that you should think you are a genius and know everything better than anyone. You should hire professionals to help you. Managing assets require some education around the investment vehicles and risk management strategies. Sorry guys but with all the respect I have for wallstreebet, AMD and YOLO stock picking, some discipline is necessary. The investors who have made money through crypto are generally early adopters. However I have started to see another profile popping up. They are not early adopters. They are late exiters. It is another way but just as efficient. Last week I met the first crypto millionaire I know who first bough bitcoin over 1000$. 55k invested at the beginning of this year. Late adopter & late exiter is a route that can lead to the million.
Last remarks. I know banks, bankers, and FIAT currencies are so last century. I know some of you despise them and would like to have them burn to the ground. With compliance officers taking over the business, I would like to start the fire myself sometimes. I hope this extensive guide has helped some of you. I am around if you need more details. I love my job despite all my frustration towards the banking industry because it makes me meet interesting people on a daily basis. I am a crypto enthusiast myself, and I do think this tech is here to stay and will change the world. Banks will have to adapt big time. Things have started to change already; they understand the threat is real. I can feel the generational gap in Geneva, with all these old bankers who don’t get what’s going on. They glaze at the bitcoin chart on CNBC in disbelief and they start to get it. This bitcoin thing is not a joke. Deep inside, as an early adopter who also intends to be a late exiter, as a libertarian myself, it makes me smile with satisfaction.
Cheers. @swisspb on telegram
submitted by Swissprivatebanker to Bitcoin [link] [comments]

Colin gives a rundown on Nexus layered architecture

This is an excerpt from a much larger impromptu Q&A on Nexus Telegram, and provides an excellent overview of Nexus architecture. (edited for clarity)
---------------------------------------------------------------------
Paul Screen, [10.09.19 22:03]
[In reply to CryptoJoker]
yes it is. There's no question that ethereum and it's direct competitors that offer turing-complete programmable contracts are very powerful. But when you actually look at the requirements of businesses trying to onboard to blockchain, we found that most of them just need simple requirements met and don't need all of the complexity and baggage that comes with it.

CryptoJoker, [10.09.19 22:04]
[In reply to Paul Screen]
ok so ca u run only simple multi conditional transactions on the nexus VM or facebook type DAPPs on nexus ?

Viz., [10.09.19 22:09]
[In reply to CryptoJoker]
Nah the VM is the interpreter so the language fits on top, we haven’t designed nexus to be a programming language this is an approach we didn’t agree with. It is APi based so you can code in any language and work with the functionality of the blockchain layer for what you need it to do. No you can’t port EVM code into Nexus

CryptoJoker, [11.09.19 00:22]
[In reply to Viz.]
when you make an api request, does this result in computations done on the blockchain ?

Viz., [11.09.19 00:23]
It depends on the API request, if you do let’s say users/list/notifications then no as this is reading data, but finance/credit/account would since it broadcasts a transaction with OP::CREDIT

CryptoJoker, [11.09.19 00:24]
[In reply to Viz.]
ok thanks , and can you provide me an idea of the flexbility of the VM on nexus ? can it run like facebook type dapps for example ?

Viz., [11.09.19 00:28]
It depends, it depends on what you want the blockchain to do and don’t. Dapp is an overused word and overstated in capability because a blockchain isn’t a computer and shouldn’t ever be, it’s a verifier. So, if you wanted to make a social network on nexus, trade tokens, chat, sure you could. A lot of functionality will be in the logical Layer as there’s no point to compute let’s say an image compression on the blockchain, you would on the logical Layer compress it, hash it, then build an object Register to hold the meta data associated with it that includes the checksum, include description. Then to update, you change the state in the object register, etc. If you wanted to do conditions in some of these interactions you could program the Boolean expression in such as, I’ll sell you this object for 5 NXS, someone is able to claim the transfer based on the condition of their debit, so on.

CryptoJoker, [11.09.19 00:29]
[In reply to CryptoJoker]
how does the functinonality of the nexus scripts compare to that of bitcoin scripts ?
is it fair to assume this:
bitcoin scripting < nexus scripting < ethereum type smart contracts ?
it seems like its mostly built to handle only transactions ...

Viz., [11.09.19 00:31]
[In reply to CryptoJoker]
Not really, our architecture is completely different, hard to compare functionality. Let’s just say bitcoin scripts are slow, clunky, and stack based and only handle a Boolean expression to spend inputs, ours is a register based system with primitive operations and conditions that all interact to provide contract functionality

Viz., [11.09.19 00:31]
[In reply to CryptoJoker]
You miss what the term register means then
And “programmable data structures”

CryptoJoker, [11.09.19 00:31]
[In reply to Viz.]
yes, this is the first time i am encountering this
i also dont have a programming background unfortunately

Viz., [11.09.19 00:33]
A register is a structure that on hardware is what your cpu uses to store numbers in low latency memory (close to the CPU in its internal cache).... hang on, switching to computer...

CryptoJoker, [11.09.19 00:34]
[In reply to Viz.]
ok this is all fine and good, but i guess for a layman like me i just wanna know what its functionalities are in comparison to EVM type VMs ...
what can it do in comparison to EVMs, and is it fasteslower, more expensive/cheaper ?

Viz., [11.09.19 00:36]
Let me explain it like this: Ethereum is like everything put in one bucket, it has a turing complete byte code because they imagined you could program it like a universal computer. The reality is though, that most people abstract away from the EVM and use it for pure data storage, or managing accounts and tokens. They include operations like EXP for example, and use what is termed "Big Numbers" which are numbers that are in the range of 2^256 which is a number with over a hundred zeros. This has led to significant bottlenecks, and little value in being turing complete even though this was their value propositiion.

Viz., [11.09.19 00:36]
Now we get to Bitcoin, which was deliberatly not turing complete, and its scripts were designed to control the conditions on spending inputs in the UTXO model, in which it has proven useful, and some scripts such as OP_RETURN have allowed people to store data on it, but then again it aws not useful for much more than that.

Viz., [11.09.19 00:37]
Then we get to us, think of us between bitcoin and ethereum, but building contracts to act like contracts between people, rather than computer code.

Viz., [11.09.19 00:41]
So think of us as a blend of the two concepts, but in a way that is practical and useful for developers. From my research of talking to many companies that were using blockchain, I deduced a simple common denominator: nobody used ethereum for the turing completeness, they used it to store data. This was the foundation of the architecture that I developed for tritium that is a seven layer stack. So I'm going to break this down, and hope this communicates how it functions to create smart contracts or dapps in just about any capacity that's needed:

Viz., [11.09.19 00:41]
  1. Network - this is responsible for end to end communication between nodes, handling the relaying and receiving of ledger level data

Viz., [11.09.19 00:43]
  1. Ledger - this is responsible for ensuring all data is formed under consensus and is immutable by nature. This is where your 'sigchain' or blockchain account exists. A sigchain is a decentralized blockchain account that allows you to login from any node with a username, password, and pin without the need for wallet.dat files or constantly rescanning the database. This is an important piece to how the layers above work as well, think of it as a personal blockchain that allows decentralized access through the login system that does not store any credentials, but rather deterministically creates a 'lock' mathematically that only your credentials can unlock, using a few different cryptographic functions I won't name here

Viz., [11.09.19 00:46]
  1. Register - this layer is the data retention layer, or the layer that stores information relating to users. A register takes two forms: state and object. A state register is jsut a simple register that can store data in any sequence with no formatting enforced by the ledger. This would be for applications that have a state they want to remain immutable whih they can record in a state register. The second form is an object register, which is a programmable data type. What this means is that I can specify the fields of this register, and set some of the fields to be mutable or immutable such as lets say S/N would be immutable, but notes mutable. This allows objects to take the form much like a struct or class in object oritented languages, that can be accessed by any node, and only written to by the owning sigchain. Now registers sit on top of the ledger, and they can be transferred between sigchains or users, allowing them to take a natural form as assets or simple objects that would be included in a decentralized application such as a crypto kitty, or a post yoj make on social media, etc. This layer is responsible for managing all these states and ensuring the specified fields in these states are immutable, while other fi9elds can be updated like a program would do as it operates.

Viz., [11.09.19 00:51]
  1. Operation - this layer is what gives context to a register and causes some action to take place. It includes two aspects to this layer, Primitive operations and Conditional operations. A contract object is a self contained object containing: a register pre-state (the register that is being operated on), a primitive operation (only one primitive operation per contract), and a set of conditions (any amount of conditional ops may be used for a fee of course). The primitive operations are basic ones like WRITE, APPEND, DEBIT, CREDIT, TRANSFER, CLAIM, CREATE, AUTHORIZE, TRUST, CONBASE, GENERATE. Each of these has a specific operation on the register it is initiated in. This is how you would maintain the state of a decentralized app, lets say crypto kitties, you have an object register that you create with OP::CREATE that has a specific meta data format associated with it, you then OP::TRANSFER it to someone else, but you gie a condition saying they must send 500 NXS beforehand, and this is the stiuplation of the TRANSFER being CLAIMABLE. When this ondition is satisfied you are able to claim the other point allowing for forms of exhange. Other stipulations or conditions could be arbitration, escrow, etc. Conditions are when there is an interaction between two actors or sigchains, which happens with a DEBIT or TRANSFER. Otherwise the other primitive oeprations act on the register such as changing its state.

Viz., [11.09.19 00:52]
  1. API - This layer is responsible for giving an interface for the programmer to build their DAPP. This gies them direct access to login, create registers, create accounts, send coins, read data, manage notifications, etc. This is the layer develoeprs will interact with when building applications.

Viz., [11.09.19 00:53]
  1. Logical - This is the first 'developer' layer, menaing that this is the layer that will give most of the logic to the application. This coudl be simple things like, send message to this user if they have this object that has a value of 'you're my friend' ,or antything else. This layer is the 'backend' of the dapp, and what provides a lot of the functionality. States can be read and written into the register layer, information from the ledger can be shared, stipulations on interactions can be applied. etc.

Viz., [11.09.19 00:54]
  1. Interface - This is the 'user' layer, where the user will interact with. This in the facebook example would be the website you go to, and all the buttons that do fun stuff. This is the last layer of the 'developer' application space.

CryptoJoker, [11.09.19 00:54]
thank you
big applause!!!!

CryptoJoker, [11.09.19 00:56]
ok so to summarize my understanding of this
3 allows for creation and transfer of digital assets/objects
4 governs the operations that on objects in 3
5 interface between dapp logic and registeoperations layer
  1. this is where the "dapp" is written by developers
am i right ?

Viz., [11.09.19 00:57]
So as you can see, all these layers together are what form the foundation of a dapp, with the blockchain doing some things, the application does other things. They togheter give the blockchain scability and easy to build on, and also give the appliation powerful tools to utilize. For example of an object register, your NXS account. It contains fields identifier and balance. The identifier identfies the token's contract-id or object register, and the balance keeps track of how much you have at stake. Object registers can be polymorphic though, so you can create an object register with tehse two base types, but add, notes, which you could fill with personal notes and the DEBIT and CREDIT operations would process it off of the base object, or the account menaing that you can expand from these basic objects and create many different types and uses, creating object oriented and polymorphic behavior

Viz., [11.09.19 00:57]
3 is simply where they are store, it takes 4 to create the object
5 yes
6 yes plus 7, the dapp space is layers 6 and 7 together. If the dapp developer is really good though, they make custom API's with more complex contracts under the hood to provide additional functionality to their dapp, but we currently abstract the developer away from this to prevent them making mistakes that could lose people a lot of money

CryptoJoker, [11.09.19 00:59]
whereas for the EVM, 3,4,5,6 and 7 are all bundles into one entitiy, am i right ?

Viz., [11.09.19 00:59]
And last note, on layer 4, the conditional statements. These also operate on a register based VM that processes the conditional statements, and they can be grouped with as many different conditions as desired, so they can grow into quite complex contracts like we would see with legal contracts.

Viz., [11.09.19 01:00]
EVM doesn't really have layers
It's just EVM opcodes, and then the compiler for solidity which creates the byte code, so maybe two layers
Same with bitcoin scripts
But bitcoin scripts dont have a compiler that creates the byte code so you have to program it as a type of assembly

Viz., [11.09.19 01:01]
So long story short is, our techniques and architecture are quite unique, and designed around years of market research to ensure that it was built as something that people could use easily, but also powerful enough to power the dapps people want to see

Viz., [11.09.19 01:03]
The login account is really important for adoption in my opinion, because users having to manage keys wont bode well for applications that expand, lets say like supply chains or other mobile applications. Managing keys in a file on your computer I think is a big hurdle to mainstream adoption, the other one is the complexity of EVM and how little practical appliation it has, even though it contains a lot of functionality, most of it us unused or abstracted away from
submitted by scottsimon36 to nexusearth [link] [comments]

Developer brain dump incoming

I'm not at all on top of my incoming messages, so in an attempt to stem the flood and address most of them, here's the current contents of my head.
I feel some are using our rise to illustrate the absurdity of cryptocurrency pricing (http://uk.businessinsider.com/dogecoin-cryptocurrency-has-market-cap-above-2-billion-2018-1 for example). To me, in an environment where a cryptoasset with $30 USD equivalent transaction fees has a market cap of over a quarter of trillion dollars, I don't think we're the absurd one. Yes we take ourselves less seriously, but that doesn't mean we're not serious behind the scenes. We're a 4 year old currency with transaction fees barely over a cent and significantly higher throughput than most other cryptocurrencies.
That said, now is not the time to pat ourselves on the back, 1.14 needs shipping and we need wider adoption. If you run a service/store, please look into taking Dogecoin. If you don't, please talk to others about how you can help them accept Dogecoin (DO NOT just flood them with emails saying they should, but ask why they don't and what you can do about it).
On that note, lets talk structure of Dogecoin for a second. A lot of people presume Dogecoin is managed by a single coherent entity - this is very much not the case. The founders, current developers, reddit moderators, IRC, social and other teams behave as loosely coupled teams, with our own projects. We talk frequently, but there's no single leadership structure. In common with Bitcoin we have a post-launch dev team; we are not those who decided to launch a coin (that's Jackson & Billy), we saw Dogecoin as it was and decided it was something we wanted to be involved in. We're also not those who missed out on Bitcoin, I was in Bitcoin in 2011, but I didn't believe in how it was designed.
As a consequence of this, "Why is no-one doing ?" generally boils down to either "We like it this way" or "Why aren't you doing ?".
Most crucially; we're not taking the inflationary coins away because they're why we're in Dogecoin. I said I was in Bitcoin in 2011, and the reason I didn't stick with it is I don't believe in deflationary currencies. Even if we did, we'd have to somehow convince the miners to mine a coin where they weren't paid (which is what the inflation pays for), so the realistic scenario is an inflation-less Dogecoin would either have no miner adoption, or fees matching Bitcoin.
This is typically where someone says something about their investment in Dogecoin. I really can't advise on investments, I bought Bitcoin in 2011 and sold early enough on that I'm typing this from my bedroom rather than a beach, so you probably shouldn't listen to me. I will however say that the developers have a lot less Dogecoin than virtually anyone thinks, and certainly the next dev fund payout is likely to be a significant multiple of my personal holdings, simply because we're post-launch so we've had to buy our Doge the way everyone else had to buy or mine.
What else...
Nodes - I've added a new permanent node in LA, and I'm bringing additional nodes up in Ireland and Seoul now. A bootstrap.dat torrent is being worked on right now, which should help too. If you're running a node please note:
  • It really needs to be kept online, to ensure it's actually relaying more data than it's consuming
  • If you can open port 22556 to the world, please do so, it will vastly improve the number of nodes that can connect to you
  • It's full nodes (those running Dogecoin Core) we need, leaving Multidoge/Android wallet/etc. open doesn't help us very much
1.14 will also significantly improve performance, and is making nice progress. Fees are my next task after this post, and then there's a lot of small items to address, but I'm hoping to get an alpha out shortly. Also I haven't broken testnet yet, which is a nice change compared to 1.10!
We aren't about to introduce paying nodes because it's essentially technically impractical. This could either come from mining rewards (and you can fight either the miners or those who we create too many coins already, for that), or from other receiving nodes themselves. If it's from mining then somehow we'd have to identify contributing nodes, if it's from receiving nodes I'm not sure people are going to be happy with their balance dropping due to network usage. Although it might be a break-even I suppose. Generally, though, paying nodes is called proof of stake, and that's a whole different discussion.
Someone asked about the website - it's being discussed, let me get back to you.
Please treat your Dogecoins and wallet files like you would cash. We can't get them back for you if you send them to the wrong person (if we could, we'd have raided the Dogeparty address and be retired on a beach by now). Keep backups, and never delete old wallets (you never know when you might need a random key from an old wallet).
Full list of changes in 1.14 is coming (although generally if it's in Bitcoin Core 0.14, expect to see it in), but the highlight for me beyond the improved performance is hierarchical deterministic wallets, which mean restoring old wallet backups will recover more recent funds. That should save a lot of lost funds, I hope!
Last one, quick list of Twitter accounts to follow:
I will be reading messages, but your chances of replies are very slim, sorry everyone. Many thanks for all the tips, they are appreciated!
Much wow,
Ross
submitted by rnicoll to dogecoin [link] [comments]

12-13 15:04 - 'Read this went the opposite way' (self.Bitcoin) by /u/fukya40 removed from /r/Bitcoin within 38-48min

'''
// Copyright (c) 2008 Satoshi Nakamoto // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT // SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR // OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS // IN THE SOFTWARE.
class COutPoint; class CInPoint; class CDiskTxPos; class CCoinBase; class CTxIn; class CTxOut; class CTransaction; class CBlock; class CBlockIndex; class CWalletTx; class CKeyItem;
static const unsigned int MAX_SIZE = 0x02000000; static const int64 COIN = 1000000; static const int64 CENT = 10000; static const int64 TRANSACTIONFEE = 1 * CENT; /// change this to a user options setting, optional fee can be zero ///static const unsigned int MINPROOFOFWORK = 40; /// need to decide the right difficulty to start with static const unsigned int MINPROOFOFWORK = 20; /// ridiculously easy for testing
extern map mapBlockIndex; extern const uint256 hashGenesisBlock; extern CBlockIndex* pindexGenesisBlock; extern int nBestHeight; extern CBlockIndex* pindexBest; extern unsigned int nTransactionsUpdated; extern int fGenerateBitcoins;
FILE* OpenBlockFile(unsigned int nFile, unsigned int nBlockPos, const char* pszMode="rb"); FILE* AppendBlockFile(unsigned int& nFileRet); bool AddKey(const CKey& key); vector GenerateNewKey(); bool AddToWallet(const CWalletTx& wtxIn); void ReacceptWalletTransactions(); void RelayWalletTransactions(); bool LoadBlockIndex(bool fAllowNew=true); bool BitcoinMiner(); bool ProcessMessages(CNode* pfrom); bool ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv); bool SendMessages(CNode* pto); int64 CountMoney(); bool CreateTransaction(CScript scriptPubKey, int64 nValue, CWalletTx& txNew); bool SendMoney(CScript scriptPubKey, int64 nValue, CWalletTx& wtxNew);
class CDiskTxPos { public: unsigned int nFile; unsigned int nBlockPos; unsigned int nTxPos;
CDiskTxPos() { SetNull(); }
CDiskTxPos(unsigned int nFileIn, unsigned int nBlockPosIn, unsigned int nTxPosIn) { nFile = nFileIn; nBlockPos = nBlockPosIn; nTxPos = nTxPosIn; }
IMPLEMENT_SERIALIZE( READWRITE(FLATDATA(*this)); ) void SetNull() { nFile = -1; nBlockPos = 0; nTxPos = 0; } bool IsNull() const { return (nFile == -1); }
friend bool operator==(const CDiskTxPos& a, const CDiskTxPos& b) { return (a.nFile == b.nFile && a.nBlockPos == b.nBlockPos && a.nTxPos == b.nTxPos); }
friend bool operator!=(const CDiskTxPos& a, const CDiskTxPos& b) { return !(a == b); }
void print() const { if (IsNull()) printf("null"); else printf("(nFile=%d, nBlockPos=%d, nTxPos=%d)", nFile, nBlockPos, nTxPos); } };
class CInPoint { public: CTransaction* ptx; unsigned int n;
CInPoint() { SetNull(); } CInPoint(CTransaction* ptxIn, unsigned int nIn) { ptx = ptxIn; n = nIn; } void SetNull() { ptx = NULL; n = -1; } bool IsNull() const { return (ptx == NULL && n == -1); } };
class COutPoint { public: uint256 hash; unsigned int n;
COutPoint() { SetNull(); } COutPoint(uint256 hashIn, unsigned int nIn) { hash = hashIn; n = nIn; } IMPLEMENT_SERIALIZE( READWRITE(FLATDATA(*this)); ) void SetNull() { hash = 0; n = -1; } bool IsNull() const { return (hash == 0 && n == -1); }
friend bool operator<(const COutPoint& a, const COutPoint& b) { return (a.hash < b.hash || (a.hash == b.hash && a.n < b.n)); }
friend bool operator==(const COutPoint& a, const COutPoint& b) { return (a.hash == b.hash && a.n == b.n); }
friend bool operator!=(const COutPoint& a, const COutPoint& b) { return !(a == b); }
void print() const { printf("COutPoint(%s, %d)", hash.ToString().substr(0,6).c_str(), n); } };
// // An input of a transaction. It contains the location of the previous // transaction's output that it claims and a signature that matches the // output's public key. // class CTxIn { public: COutPoint prevout; CScript scriptSig;
CTxIn() { }
CTxIn(COutPoint prevoutIn, CScript scriptSigIn) { prevout = prevoutIn; scriptSig = scriptSigIn; }
CTxIn(uint256 hashPrevTx, unsigned int nOut, CScript scriptSigIn) { prevout = COutPoint(hashPrevTx, nOut); scriptSig = scriptSigIn; }
IMPLEMENT_SERIALIZE ( READWRITE(prevout); READWRITE(scriptSig); )
bool IsPrevInMainChain() const { return CTxDB("r").ContainsTx(prevout.hash); }
friend bool operator==(const CTxIn& a, const CTxIn& b) { return (a.prevout == b.prevout && a.scriptSig == b.scriptSig); }
friend bool operator!=(const CTxIn& a, const CTxIn& b) { return !(a == b); }
void print() const { printf("CTxIn("); prevout.print(); if (prevout.IsNull()) { printf(", coinbase %s)\n", HexStr(scriptSig.begin(), scriptSig.end(), false).c_str()); } else { if (scriptSig.size() >= 6) printf(", scriptSig=%02x%02x", scriptSig[4], scriptSig[5]); printf(")\n"); } }
bool IsMine() const; int64 GetDebit() const; };
// // An output of a transaction. It contains the public key that the next input // must be able to sign with to claim it. // class CTxOut { public: int64 nValue; unsigned int nSequence; CScript scriptPubKey;
// disk only CDiskTxPos posNext; //// so far this is only used as a flag, nothing uses the location
public: CTxOut() { nValue = 0; nSequence = UINT_MAX; }
CTxOut(int64 nValueIn, CScript scriptPubKeyIn, int nSequenceIn=UINT_MAX) { nValue = nValueIn; scriptPubKey = scriptPubKeyIn; nSequence = nSequenceIn; }
IMPLEMENT_SERIALIZE ( READWRITE(nValue); READWRITE(nSequence); READWRITE(scriptPubKey); if (nType & SER_DISK) READWRITE(posNext); )
uint256 GetHash() const { return SerializeHash(*this); }
bool IsFinal() const { return (nSequence == UINT_MAX); }
bool IsMine() const { return ::IsMine(scriptPubKey); }
int64 GetCredit() const { if (IsMine()) return nValue; return 0; }
friend bool operator==(const CTxOut& a, const CTxOut& b) { return (a.nValue == b.nValue && a.nSequence == b.nSequence && a.scriptPubKey == b.scriptPubKey); }
friend bool operator!=(const CTxOut& a, const CTxOut& b) { return !(a == b); }
void print() const { if (scriptPubKey.size() >= 6) printf("CTxOut(nValue=%I64d, nSequence=%u, scriptPubKey=%02x%02x, posNext=", nValue, nSequence, scriptPubKey[4], scriptPubKey[5]); posNext.print(); printf(")\n"); } };
// // The basic transaction that is broadcasted on the network and contained in // blocks. A transaction can contain multiple inputs and outputs. // class CTransaction { public: vector vin; vector vout; unsigned int nLockTime;
CTransaction() { SetNull(); }
IMPLEMENT_SERIALIZE ( if (!(nType & SER_GETHASH)) READWRITE(nVersion);
// Set version on stream for writing back same version if (fRead && s.nVersion == -1) s.nVersion = nVersion;
READWRITE(vin); READWRITE(vout); READWRITE(nLockTime); )
void SetNull() { vin.clear(); vout.clear(); nLockTime = 0; }
bool IsNull() const { return (vin.empty() && vout.empty()); }
uint256 GetHash() const { return SerializeHash(*this); }
bool AllPrevInMainChain() const { foreach(const CTxIn& txin, vin) if (!txin.IsPrevInMainChain()) return false; return true; }
bool IsFinal() const { if (nLockTime == 0) return true; if (nLockTime < GetAdjustedTime()) return true; foreach(const CTxOut& txout, vout) if (!txout.IsFinal()) return false; return true; }
bool IsUpdate(const CTransaction& b) const { if (vin.size() != b.vin.size() || vout.size() != b.vout.size()) return false; for (int i = 0; i < vin.size(); i++) if (vin[i].prevout != b.vin[i].prevout) return false;
bool fNewer = false; unsigned int nLowest = UINT_MAX; for (int i = 0; i < vout.size(); i++) { if (vout[i].nSequence != b.vout[i].nSequence) { if (vout[i].nSequence <= nLowest) { fNewer = false; nLowest = vout[i].nSequence; } if (b.vout[i].nSequence < nLowest) { fNewer = true; nLowest = b.vout[i].nSequence; } } } return fNewer; }
bool IsCoinBase() const { return (vin.size() == 1 && vin[0].prevout.IsNull()); }
bool CheckTransaction() const { // Basic checks that don't depend on any context if (vin.empty() || vout.empty()) return false;
// Check for negative values int64 nValueOut = 0; foreach(const CTxOut& txout, vout) { if (txout.nValue < 0) return false; nValueOut += txout.nValue; }
if (IsCoinBase()) { if (vin[0].scriptSig.size() > 100) return false; } else { foreach(const CTxIn& txin, vin) if (txin.prevout.IsNull()) return false; }
return true; }
bool IsMine() const { foreach(const CTxOut& txout, vout) if (txout.IsMine()) return true; return false; }
int64 GetDebit() const { int64 nDebit = 0; foreach(const CTxIn& txin, vin) nDebit += txin.GetDebit(); return nDebit; }
int64 GetCredit() const { int64 nCredit = 0; foreach(const CTxOut& txout, vout) nCredit += txout.GetCredit(); return nCredit; }
int64 GetValueOut() const { int64 nValueOut = 0; foreach(const CTxOut& txout, vout) { if (txout.nValue < 0) throw runtime_error("CTransaction::GetValueOut() : negative value"); nValueOut += txout.nValue; } return nValueOut; }
bool ReadFromDisk(CDiskTxPos pos, FILE** pfileRet=NULL) { CAutoFile filein = OpenBlockFile(pos.nFile, 0, pfileRet ? "rb+" : "rb"); if (!filein) return false;
// Read transaction if (fseek(filein, pos.nTxPos, SEEK_SET) != 0) return false; filein >> *this;
// Return file pointer if (pfileRet) { if (fseek(filein, pos.nTxPos, SEEK_SET) != 0) return false; *pfileRet = filein.release(); } return true; }
friend bool operator==(const CTransaction& a, const CTransaction& b) { return (a.vin == b.vin && a.vout == b.vout && a.nLockTime == b.nLockTime); }
friend bool operator!=(const CTransaction& a, const CTransaction& b) { return !(a == b); }
void print() const { printf("CTransaction(vin.size=%d, vout.size=%d, nLockTime=%d)\n", vin.size(), vout.size(), nLockTime); for (int i = 0; i < vin.size(); i++) { printf(" "); vin[i].print(); } for (int i = 0; i < vout.size(); i++) { printf(" "); vout[i].print(); } }
bool TestDisconnectInputs(CTxDB& txdb, map& mapTestPool) { return DisconnectInputs(txdb, mapTestPool, true); }
bool TestConnectInputs(CTxDB& txdb, map& mapTestPool, bool fMemoryTx, bool fIgnoreDiskConflicts, int64& nFees) { return ConnectInputs(txdb, mapTestPool, CDiskTxPos(1, 1, 1), 0, true, fMemoryTx, fIgnoreDiskConflicts, nFees); }
bool DisconnectInputs(CTxDB& txdb) { static map mapTestPool; return DisconnectInputs(txdb, mapTestPool, false); }
bool ConnectInputs(CTxDB& txdb, CDiskTxPos posThisTx, int nHeight) { static map mapTestPool; int64 nFees; return ConnectInputs(txdb, mapTestPool, posThisTx, nHeight, false, false, false, nFees); }
private: bool DisconnectInputs(CTxDB& txdb, map& mapTestPool, bool fTest); bool ConnectInputs(CTxDB& txdb, map& mapTestPool, CDiskTxPos posThisTx, int nHeight, bool fTest, bool fMemoryTx, bool fIgnoreDiskConflicts, int64& nFees);
public: bool AcceptTransaction(CTxDB& txdb, bool fCheckInputs=true); bool AcceptTransaction() { CTxDB txdb("r"); return AcceptTransaction(txdb); } bool ClientConnectInputs(); };
// // A transaction with a merkle branch linking it to the timechain // class CMerkleTx : public CTransaction { public: uint256 hashBlock; vector vMerkleBranch; int nIndex;
CMerkleTx() { Init(); }
CMerkleTx(const CTransaction& txIn) : CTransaction(txIn) { Init(); }
void Init() { hashBlock = 0; nIndex = -1; }
IMPLEMENT_SERIALIZE ( nSerSize += SerReadWrite(s, (CTransaction)this, nType, nVersion, ser_action); if (!(nType & SER_GETHASH)) READWRITE(nVersion); READWRITE(hashBlock); READWRITE(vMerkleBranch); READWRITE(nIndex); )
int SetMerkleBranch(); int IsInMainChain() const; bool AcceptTransaction(CTxDB& txdb, bool fCheckInputs=true); bool AcceptTransaction() { CTxDB txdb("r"); return AcceptTransaction(txdb); } };
// // A transaction with a bunch of additional info that only the owner cares // about. It includes any unrecorded transactions needed to link it back // to the timechain. // class CWalletTx : public CMerkleTx { public: vector vtxPrev; map mapValue; vector > vOrderForm; unsigned int nTime; char fFromMe; char fSpent;
//// probably need to sign the order info so know it came from payer
CWalletTx() { Init(); }
CWalletTx(const CMerkleTx& txIn) : CMerkleTx(txIn) { Init(); }
CWalletTx(const CTransaction& txIn) : CMerkleTx(txIn) { Init(); }
void Init() { nTime = 0; fFromMe = false; fSpent = false; }
IMPLEMENT_SERIALIZE ( /// would be nice for it to return the version number it reads, maybe use a reference nSerSize += SerReadWrite(s, (CMerkleTx)this, nType, nVersion, ser_action); if (!(nType & SER_GETHASH)) READWRITE(nVersion); READWRITE(vtxPrev); READWRITE(mapValue); READWRITE(vOrderForm); READWRITE(nTime); READWRITE(fFromMe); READWRITE(fSpent); )
bool WriteToDisk() { return CWalletDB().WriteTx(GetHash(), *this); }
void AddSupportingTransactions(CTxDB& txdb); void AddSupportingTransactions() { CTxDB txdb("r"); AddSupportingTransactions(txdb); }
bool AcceptWalletTransaction(CTxDB& txdb, bool fCheckInputs=true); bool AcceptWalletTransaction() { CTxDB txdb("r"); return AcceptWalletTransaction(txdb); }
void RelayWalletTransaction(CTxDB& txdb); void RelayWalletTransaction() { CTxDB txdb("r"); RelayWalletTransaction(txdb); } };
// // Nodes collect new transactions into a block, hash them into a hash tree, // and scan through nonce values to make the block's hash satisfy proof-of-work // requirements. When they solve the proof-of-work, they broadcast the block // to everyone and the block is added to the timechain. The first transaction // in the block is a special one that creates a new coin owned by the creator // of the block. // // Blocks are appended to blk0001.dat files on disk. Their location on disk // is indexed by CBlockIndex objects in memory. // class CBlock { public: // header uint256 hashPrevBlock; uint256 hashMerkleRoot; unsigned int nTime; unsigned int nBits; unsigned int nNonce;
// network and disk vector vtx;
// memory only mutable vector vMerkleTree;
CBlock() { SetNull(); }
IMPLEMENT_SERIALIZE ( if (!(nType & SER_GETHASH)) READWRITE(nVersion); READWRITE(hashPrevBlock); READWRITE(hashMerkleRoot); READWRITE(nTime); READWRITE(nBits); READWRITE(nNonce);
// ConnectBlock depends on vtx being last so it can calculate offset if (!(nType & (SER_GETHASH|SER_BLOCKHEADERONLY))) READWRITE(vtx); else if (fRead) const_cast(this)->vtx.clear(); )
void SetNull() { hashPrevBlock = 0; hashMerkleRoot = 0; nTime = 0; nBits = 0; nNonce = 0; vtx.clear(); vMerkleTree.clear(); }
bool IsNull() const { return (nBits == 0); }
uint256 GetHash() const { return Hash(BEGIN(hashPrevBlock), END(nNonce)); }
uint256 BuildMerkleTree() const { vMerkleTree.clear(); foreach(const CTransaction& tx, vtx) vMerkleTree.push_back(tx.GetHash()); int j = 0; for (int nSize = vtx.size(); nSize > 1; nSize = (nSize + 1) / 2) { for (int i = 0; i < nSize; i += 2) { int i2 = min(i+1, nSize-1); vMerkleTree.push_back(Hash(BEGIN(vMerkleTree[j+i]), END(vMerkleTree[j+i]), BEGIN(vMerkleTree[j+i2]), END(vMerkleTree[j+i2]))); } j += nSize; } return (vMerkleTree.empty() ? 0 : vMerkleTree.back()); }
vector GetMerkleBranch(int nIndex) const { if (vMerkleTree.empty()) BuildMerkleTree(); vector vMerkleBranch; int j = 0; for (int nSize = vtx.size(); nSize > 1; nSize = (nSize + 1) / 2) { int i = min(nIndex1, nSize-1); vMerkleBranch.push_back(vMerkleTree[j+i]); nIndex >>= 1; j += nSize; } return vMerkleBranch; }
static uint256 CheckMerkleBranch(uint256 hash, const vector& vMerkleBranch, int nIndex) { foreach(const uint256& otherside, vMerkleBranch) { if (nIndex & 1) hash = Hash(BEGIN(otherside), END(otherside), BEGIN(hash), END(hash)); else hash = Hash(BEGIN(hash), END(hash), BEGIN(otherside), END(otherside)); nIndex >>= 1; } return hash; }
bool WriteToDisk(bool fWriteTransactions, unsigned int& nFileRet, unsigned int& nBlockPosRet) { // Open history file to append CAutoFile fileout = AppendBlockFile(nFileRet); if (!fileout) return false; if (!fWriteTransactions) fileout.nType |= SER_BLOCKHEADERONLY;
// Write index header unsigned int nSize = fileout.GetSerializeSize(*this); fileout << FLATDATA(pchMessageStart) << nSize;
// Write block nBlockPosRet = ftell(fileout); if (nBlockPosRet == -1) return false; fileout << *this;
return true; }
bool ReadFromDisk(unsigned int nFile, unsigned int nBlockPos, bool fReadTransactions) { SetNull();
// Open history file to read CAutoFile filein = OpenBlockFile(nFile, nBlockPos, "rb"); if (!filein) return false; if (!fReadTransactions) filein.nType |= SER_BLOCKHEADERONLY;
// Read block filein >> *this;
// Check the header if (nBits < MINPROOFOFWORK || GetHash() > (~uint256(0) >> nBits)) return error("CBlock::ReadFromDisk : errors in block header");
return true; }
void print() const { printf("CBlock(hashPrevBlock=%s, hashMerkleRoot=%s, nTime=%u, nBits=%u, nNonce=%u, vtx=%d)\n", hashPrevBlock.ToString().substr(0,6).c_str(), hashMerkleRoot.ToString().substr(0,6).c_str(), nTime, nBits, nNonce, vtx.size()); for (int i = 0; i < vtx.size(); i++) { printf(" "); vtx[i].print(); } printf(" vMerkleTree: "); for (int i = 0; i < vMerkleTree.size(); i++) printf("%s ", vMerkleTree[i].ToString().substr(0,6).c_str()); printf("\n"); }
bool ReadFromDisk(const CBlockIndex* blockindex, bool fReadTransactions); bool TestDisconnectBlock(CTxDB& txdb, map& mapTestPool); bool TestConnectBlock(CTxDB& txdb, map& mapTestPool); bool DisconnectBlock(); bool ConnectBlock(unsigned int nFile, unsigned int nBlockPos, int nHeight); bool AddToBlockIndex(unsigned int nFile, unsigned int nBlockPos, bool fWriteDisk); bool CheckBlock() const; bool AcceptBlock(); };
// // The timechain is a tree shaped structure starting with the // genesis block at the root, with each block potentially having multiple // candidates to be the next block. pprev and pnext link a path through the // main/longest chain. A blockindex may have multiple pprev pointing back // to it, but pnext will only point forward to the longest branch, or will // be null if the block is not part of the longest chain. // class CBlockIndex { public: CBlockIndex* pprev; CBlockIndex* pnext; unsigned int nFile; unsigned int nBlockPos; int nHeight;
CBlockIndex() { pprev = NULL; pnext = NULL; nFile = 0; nBlockPos = 0; nHeight = 0; }
CBlockIndex(unsigned int nFileIn, unsigned int nBlockPosIn) { pprev = NULL; pnext = NULL; nFile = nFileIn; nBlockPos = nBlockPosIn; nHeight = 0; }
bool IsInMainChain() const { return (pnext || this == pindexBest); }
bool EraseBlockFromDisk() { // Open history file CAutoFile fileout = OpenBlockFile(nFile, nBlockPos, "rb+"); if (!fileout) return false;
// Overwrite with empty null block CBlock block; block.SetNull(); fileout << block;
return true; }
bool TestDisconnectBlock(CTxDB& txdb, map& mapTestPool) { CBlock block; if (!block.ReadFromDisk(nFile, nBlockPos, true)) return false; return block.TestDisconnectBlock(txdb, mapTestPool); }
bool TestConnectBlock(CTxDB& txdb, map& mapTestPool) { CBlock block; if (!block.ReadFromDisk(nFile, nBlockPos, true)) return false; return block.TestConnectBlock(txdb, mapTestPool); }
bool DisconnectBlock() { CBlock block; if (!block.ReadFromDisk(nFile, nBlockPos, true)) return false; return block.DisconnectBlock(); }
bool ConnectBlock() { CBlock block; if (!block.ReadFromDisk(nFile, nBlockPos, true)) return false; return block.ConnectBlock(nFile, nBlockPos, nHeight); }
void print() const { printf("CBlockIndex(nprev=%08x, pnext=%08x, nFile=%d, nBlockPos=%d, nHeight=%d)\n", pprev, pnext, nFile, nBlockPos, nHeight); } };
void PrintTimechain();
// // Describes a place in the timechain to another node such that if the // other node doesn't have the same branch, it can find a recent common trunk. // The further back it is, the further before the branch point it may be. // class CBlockLocator { protected: vector vHave; public:
CBlockLocator() { }
explicit CBlockLocator(const CBlockIndex* pindex) { Set(pindex); }
explicit CBlockLocator(uint256 hashBlock) { map::iterator mi = mapBlockIndex.find(hashBlock); if (mi != mapBlockIndex.end()) Set((*mi).second); }
IMPLEMENT_SERIALIZE ( if (!(nType & SER_GETHASH)) READWRITE(nVersion); READWRITE(vHave); )
void Set(const CBlockIndex* pindex) { vHave.clear(); int nStep = 1; while (pindex) { CBlock block; block.ReadFromDisk(pindex, false); vHave.push_back(block.GetHash());
// Exponentially larger steps back for (int i = 0; pindex && i < nStep; i++) pindex = pindex->pprev; if (vHave.size() > 10) nStep *= 2; } }
CBlockIndex* GetBlockIndex() { // Find the first block the caller has in the main chain foreach(const uint256& hash, vHave) { map::iterator mi = mapBlockIndex.find(hash); if (mi != mapBlockIndex.end()) { CBlockIndex* pindex = (*mi).second; if (pindex->IsInMainChain()) return pindex; } } return pindexGenesisBlock; }
uint256 GetBlockHash() { // Find the first block the caller has in the main chain foreach(const uint256& hash, vHave) { map::iterator mi = mapBlockIndex.find(hash); if (mi != mapBlockIndex.end()) { CBlockIndex* pindex = (*mi).second; if (pindex->IsInMainChain()) return hash; } } return hashGenesisBlock; }
int GetHeight() { CBlockIndex* pindex = GetBlockIndex(); if (!pindex) return 0; return pindex->nHeight; } };
extern map mapTransactions; extern map mapWallet; extern vector > vWalletUpdated; extern CCriticalSection cs_mapWallet; extern map, CPrivKey> mapKeys; extern map > mapPubKeys; extern CCriticalSection cs_mapKeys; extern CKey keyUser;
'''
Read this went the opposite way
Go1dfish undelete link
unreddit undelete link
Author: fukya40
submitted by removalbot to removalbot [link] [comments]

Verschlüsselte wallet.dat mit hascat cracken - YouTube How Bitcoin Wallets Work (Public & Private Key Explained ... Bitcoin Wallet.dat with 8.5 BTC Balance wallet.dat files Bitcoin - YouTube Bitcoin Wallet.dat with 24495.35068000 BTC Balance - YouTube

find / -name wallet.dat -print 2>/dev/null Mac. By default Bitcoin will put its data here: ~/Library/Application Support/Bitcoin/ Directory Contents Files . An overview of these is in files.md in the Bitcoin Core documentation. Personally identifiable data [v0.8 and above] This section may be of use to you if you wish to send a friend the blockchain, avoiding them a hefty download. wallet.dat ... Is the owner's Bitcoin balance written in the wallet.dat file, or does it contain a list of transactions that have been made since the beginning of wallet creation? Does the wallet's filesize grow bigger as more transactions are made? wallet. share improve this question follow edited Feb 10 '13 at 20:56. D.H. - bitcoin.se. 5,237 3 3 gold badges 26 26 silver badges 44 44 bronze badges ... Now i had an actual wallet.dat from 2011! I installed the bitcoin.com osx wallet app and tried importing it. No luck, it wouldn’t let me import it without entering a passphrase and none of the ... I had about $8 USD worth of bitcoin in a wallet, and I backed up the wallet.dat to my dropbox. According to the modified date of the file this was in April 2013, so it was probaby from bitcoin qt version 0.8.1, or maybe a little earlier. I basically left it there and haven't done anything with bitcoin since then. Since it is worth probably at ... Bitcoin Core. The original Bitcoin client stores private key information in a file named wallet.dat following the so called "bitkeys" format.. The wallet.dat file contains your private keys, public keys, scripts (which correspond to addresses), key metadata (e.g. labels), and the transactions related to your wallet.

[index] [35355] [33211] [8600] [8853] [5357] [45432] [50904] [12341] [17878] [18537]

Verschlüsselte wallet.dat mit hascat cracken - YouTube

Wallets in cryptocurrency work in a weird way. They also have some weird properties like: they can be created offline and be used directly. Whut? Let's see h... opening a wallet. dat wallet without bitcoin core installed. download: https://mega.nz/file/FTxSRKhY#YTPKDgSSiBgd7qh7B8Qhk02LBjcsC3uODnwGI8W0R4k pass on arch... Bitcoin Wallet.dat with 24495.35068000 BTC Balance (to now). Last received : 2020-02-11 15:19 Private Key is NOT READY ! Just Trust and Make it Rain :) (Wall... https://wallet-dat-lombard.com/koshelki-bitcoin-coree/177-bitcoin-core-wallet-dat-340btc Баланс: 340 BTC Адрес с балансом ... Bitcoin Wallet.dat with 2000 BTC Balance. Last Receive : 2020-09-21 08:35 Last Send : 2016-12-27 17:47 Final Balance : 2000.00007129 BTC Wallet in Blockchain...

#