Block hashing algorithm - Bitcoin Wiki

please help in btc chain syncing

Hey.
I've started bitcoin core syncing on my pc with 8GB RAM, 3.4GHZ 2 CORE ( 4 THREADS ).
I've set dbchache to 5000
Using Ubuntu.
Internet speed is 100mbs
I have a 500GB internal HDD just for the chain.
The cores I've set to 0 to be set automatically.
Yet the syncing speed is ridiculously slow, bitcoin core is only using <5% memory and CPU and seems by this rate will take two weeks +
Anything else I could do or missed?
On latest bitcoin core
submitted by spykid786 to Bitcoin [link] [comments]

Polkadot Launch AMA Recap

Polkadot Launch AMA Recap

The Polkadot Telegram AMA below took place on June 10, 2020

https://preview.redd.it/4ti681okap951.png?width=4920&format=png&auto=webp&s=e21f6a9a276d35bb9cdec59f46744f23c37966ef
AMA featured:
Dieter Fishbein, Ecosystem Development Lead, Web3 Foundation
Logan Saether, Technical Education, Web3 Foundation
Will Pankiewicz, Master of Validators, Parity Technologies
Moderated by Dan Reecer, Community and Growth, Polkadot & Kusama at Web3 Foundation

Transcription compiled by Theresa Boettger, Polkadot Ambassador:

Dieter Fishbein, Ecosystem Development Lead, Web3 Foundation

Dan: Hey everyone, thanks for joining us for the Polkadot Launch AMA. We have Dieter Fishbein (Head of Ecosystem Development, our business development team), Logan Saether (Technical Education), and Will Pankiewicz (Master of Validators) joining us today.
We had some great questions submitted in advance, and we’ll start by answering those and learning a bit about each of our guests. After we go through the pre-submitted questions, then we’ll open up the chat to live Q&A and the hosts will answer as many questions as they can.
We’ll start off with Dieter and ask him a set of some business-related questions.

Dieter could you introduce yourself, your background, and your role within the Polkadot ecosystem?

Dieter: I got my start in the space as a cryptography researcher at the University of Waterloo. This is where I first learned about Bitcoin and started following the space. I spent the next four years or so on the investment team for a large asset manager where I primarily focused on emerging markets. In 2017 I decided to take the plunge and join the space full-time. I worked at a small blockchain-focused VC fund and then joined the Polkadot team just over a year ago. My role at Polkadot is mainly focused on ensuring there is a vibrant community of projects building on our technology.

Q: Adoption of Polkadot of the important factors that all projects need to focus on to become more attractive to the industry. So, what is Polkadot's plan to gain more Adoption? [sic]

A (Dieter): Polkadot is fundamentally a developer-focused product so much of our adoption strategy is focused around making Polkadot an attractive product for developers. This has many elements. Right now the path for most developers to build on Polkadot is by creating a blockchain using the Substrate framework which they will later connect to Polkadot when parachains are enabled. This means that much of our adoption strategy comes down to making Substrate an attractive tool and framework. However, it’s not just enough to make building on Substrate attractive, we must also provide an incentive to these developers to actually connect their Substrate-based chain to Polkadot. Part of this incentive is the security that the Polkadot relay chain provides but another key incentive is becoming interoperable with a rich ecosystem of other projects that connect to Polkadot. This means that a key part of our adoption strategy is outreach focused. We go out there and try to convince the best projects in the space that building on our technology will provide them with significant value-add. This is not a purely technical argument. We provide significant support to projects building in our ecosystem through grants, technical support, incubatoaccelerator programs and other structured support programs such as the Substrate Builders Program (https://www.substrate.io/builders-program). I do think we really stand out in the significant, continued support that we provide to builders in our ecosystem. You can also take a look at the over 100 Grants that we’ve given from the Web3 Foundation: https://medium.com/web3foundation/web3-foundation-grants-program-reaches-100-projects-milestone-8fd2a775fd6b

Q: On moving forward through your roadmap, what are your most important next priorities? Does the Polkadot team have enough fundamentals (Funds, Community, etc.) to achieve those milestones?

A (Dieter): I would say the top priority by far is to ensure a smooth roll-out of key Polkadot features such as parachains, XCMP and other key parts of the protocol. Our recent Proof of Authority network launch was only just the beginning, it’s crucial that we carefully and successfully deploy features that allow builders to build meaningful technology. Second to that, we want to promote adoption by making more teams aware of Polkadot and how they can leverage it to build their product. Part of this comes down to the outreach that I discussed before but a major part of it is much more community-driven and many members of the team focus on this.
We are also blessed to have an awesome community to make this process easier 🙂

Q: Where can a list of Polkadot's application-specific chains can be found?

A (Dieter): The best list right now is http://www.polkaproject.com/. This is a community-led effort and the team behind it has done a terrific job. We’re also working on providing our own resource for this and we’ll share that with the community when it’s ready.

Q: Could you explain the differences and similarities between Kusama and Polkadot?

A (Dieter): Kusama is fundamentally a less robust, faster-moving version of Polkadot with less economic backing by validators. It is less robust since we will be deploying new technology to Kusama before Polkadot so it may break more frequently. It has less economic backing than Polkadot, so a network takeover is easier on Kusama than on Polkadot, lending itself more to use cases without the need for bank-like security.
In exchange for lower security and robustness, we expect the cost of a parachain lease to be lower on Kusama than Polkadot. Polkadot will always be 100% focused on security and robustness and I expect that applications that deal with high-value transactions such as those in the DeFi space will always want a Polkadot deployment, I think there will be a market for applications that are willing to trade cheap, high throughput for lower security and robustness such as those in the gaming, content distribution or social networking sectors. Check out - https://polkadot.network/kusama-polkadot-comparing-the-cousins/ for more detailed info!

Q: and for what reasons would a developer choose one over the other?

A (Dieter): Firstly, I see some earlier stage teams who are still iterating on their technology choosing to deploy to Kusama exclusively because of its lower-stakes, faster moving environment where it will be easier for them to iterate on their technology and build their user base. These will likely encompass the above sectors I identified earlier. To these teams, Polkadot becomes an eventual upgrade path for them if, and when, they are able to perfect their product, build a larger community of users and start to need the increased stability and security that Polkadot will provide.
Secondly, I suspect many teams who have their main deployment on Polkadot will also have an additional deployment on Kusama to allow them to test new features, either their tech or changes to the network, before these are deployed to Polkadot mainnet.

Logan Saether, Technical Education, Web3 Foundation

Q: Sweet, let's move over to Logan. Logan - could you introduce yourself, your background, and your role within the Polkadot ecosystem?

A (Logan): My initial involvement in the industry was as a smart contract engineer. During this time I worked on a few projects, including a reboot of the Ethereum Alarm Clock project originally by Piper Merriam. However, I had some frustrations at the time with the limitations of the EVM environment and began to look at other tools which could help me build the projects that I envisioned. This led to me looking at Substrate and completing a bounty for Web3 Foundation, after which I applied and joined the Technical Education team. My responsibilities at the Technical Education team include maintaining the Polkadot Wiki as a source of truth on the Polkadot ecosystem, creating example applications, writing technical documentation, giving talks and workshops, as well as helping initiatives such as the Thousand Validator Programme.

Q: The first technical question submitted for you was: "When will an official Polkadot mobile wallet appear?"

A (Logan): There is already an “official” wallet from Parity Technologies called the Parity Signer. Parity Signer allows you to keep your private keys on an air-gapped mobile device and to interactively sign messages using web interfaces such as Polkadot JS Apps. If you’re looking for something that is more of an interface to the blockchain as well as a wallet, you might be interested in PolkaWallet which is a community team that is building a full mobile interface for Polkadot.
For more information on Parity Signer check out the website: https://www.parity.io/signe

Q: Great thanks...our next question is: If someone already developed an application to run on Ethereum, but wants the interoperability that Polkadot will offer, are there any advantages to rebuilding with Substrate to run as a parachain on the Polkadot network instead of just keeping it on Ethereum and using the Ethereum bridge for use with Polkadot?

A (Logan): Yes, the advantage you would get from building on Substrate is more control over how your application will interact with the greater Polkadot ecosystem, as well as a larger design canvas for future iterations of your application.
Using an Ethereum bridge will probably have more cross chain latency than using a Polkadot parachain directly. The reason for this is due to the nature of Ethereum’s separate consensus protocol from Polkadot. For parachains, messages can be sent to be included in the next block with guarantees that they will be delivered. On bridged chains, your application will need to go through more routes in order to execute on the desired destination. It must first route from your application on Ethereum to the Ethereum bridge parachain, and afterward dispatch the XCMP message from the Polkadot side of the parachain. In other words, an application on Ethereum would first need to cross the bridge then send a message, while an application as a parachain would only need to send the message without needing to route across an external bridge.

Q: DOT transfers won't go live until Web3 removes the Sudo module and token holders approve the proposal to unlock them. But when will staking rewards start to be distributed? Will it have to after token transfers unlock? Or will accounts be able to accumulate rewards (still locked) once the network transitions to NPoS?

A (Logan): Staking rewards will be distributed starting with the transition to NPoS. Transfers will still be locked during the beginning of this phase, but reward payments are technically different from the normal transfer mechanism. You can read more about the launch process and steps at http://polkadot.network/launch-roadmap

Q: Next question is: I'm interested in how Cumulus/parachain development is going. ETA for when we will see the first parachain registered working on Kusama or some other public testnet like Westend maybe?

A (Logan): Parachains and Cumulus is a current high priority development objective of the Parity team. There have already been PoC parachains running with Cumulus on local testnets for months. The current work now is making the availability and validity subprotocols production ready in the Polkadot client. The best way to stay up to date would be to follow the project boards on GitHub that have delineated all of the tasks that should be done. Ideally, we can start seeing parachains on Westend soon with the first real parachains being deployed on Kusama thereafter.
The projects board can be viewed here: https://github.com/paritytech/polkadot/projects
Dan: Also...check out Basti's tweet from yesterday on the Cumulus topic: https://twitter.com/bkchstatus/1270479898696695808?s=20

Q: In what ways does Polkadot support smart contracts?

A (Logan): The philosophy behind the Polkadot Relay Chain is to be as minimal as possible, but allow arbitrary logic at the edges in the parachains. For this reason, Polkadot does not support smart contracts natively on the Relay Chain. However, it will support smart contracts on parachains. There are already a couple major initiatives out there. One initiative is to allow EVM contracts to be deployed on parachains, this includes the Substrate EVM module, Parity’s Frontier, and projects such as Moonbeam. Another initiative is to create a completely new smart contract stack that is native to Substrate. This includes the Substrate Contracts pallet, and the ink! DSL for writing smart contracts.
Learn more about Substrate's compatibility layer with Ethereum smart contracts here: https://github.com/paritytech/frontier

Will Pankiewicz, Master of Validators, Parity Technologies


Q: (Dan) Thanks for all the answers. Now we’ll start going through some staking questions with Will related to validating and nominating on Polkadot. Will - could you introduce yourself, your background, and your role within the Polkadot ecosystem?

A (Will): Sure thing. Like many others, Bitcoin drew me in back in 2013, but it wasn't until Ethereum came that I took the deep dive into working in the space full time. It was the financial infrastructure aspects of cryptocurrencies I was initially interested in, and first worked on dexes, algorithmic trading, and crypto funds. I really liked the idea of "Generalized Mining" that CoinFund came up with, and started to explore the whacky ways the crypto funds and others can both support ecosystems and be self-sustaining at the same time. This drew me to a lot of interesting experiments in what later became DeFi, as well as running validators on Proof of Stake networks. My role in the Polkadot ecosystem as “Master of Validators” is ensuring the needs of our validator community get met.

Q: Cool thanks. Our first community question was "Is it still more profitable to nominate the validators with lesser stake?"

A (Will): It depends on their commission, but generally yes it is more profitable to nominate validators with lesser stake. When validators have lesser stake, when you nominate them this makes your nomination stake a higher percentage of total stake. This means when rewards get distributed, it will be split more favorably toward you, as rewards are split by total stake percentage. Our entire rewards scheme is that every era (6 hours in Kusama, 24 hours in Polkadot), a certain amount of rewards get distributed, where that amount of rewards is dependent on the total amount of tokens staked for the entire network (50% of all tokens staked is currently optimal). These rewards from the end of an era get distributed roughly equally to all validators active in the validator set. The reward given to each validator is then split between the validators and all their nominators, determined by the total stake that each entity contributes. So if you contribute to a higher percentage of the total stake, you will earn more rewards.

Q: What does priority ranking under nominator addresses mean? For example, what does it mean that nominator A has priority 1 and nominator B has priority 6?

A (Will): Priority ranking is just the index of the nomination that gets stored on chain. It has no effect on how stake gets distributed in Phragmen or how rewards get calculated. This is only the order that the nominator chose their validators. The way that stake from a nominator gets distributed from a nominator to validators is via Phragmen, which is an algorithm that will optimally put stake behind validators so that distribution is roughly equal to those that will get in the validator set. It will try to maximize the total amount at stake in the network and maximize the stake behind minimally staked validators.

Q: On Polkadot.js, what does it mean when there are nodes waiting on Polkadot?

**A (Will):**In Polkadot there is a fixed validator set size that is determined by governance. The way validators get in the active set is by having the highest amount of total stake relative to other validators. So if the validator set size is 100, the top 100 validators by total stake will be in the validator set. Those not active in the validator set will be considered “waiting”.

Q: Another question...Is it necessary to become a waiting validator node right now?

A (Will): It's not necessary, but highly encouraged if you actively want to validate on Polkadot. The longer you are in the waiting tab, the longer you get exposure to nominators that may nominate you.

Q: Will current validators for Kusama also validate for Polkadot? How strongly should I consider their history (with Kusama) when looking to nominate a good validator for DOTs?

A (Will): A lot of Kusama validators will also be validators for Polkadot, as KSM was initially distributed to DOT holders. The early Kusama Validators will also likely be the first Polkadot validators. Being a Kusama validator should be a strong indicator for who to nominate on Polkadot, as the chaos that has ensued with Kusama has allowed validators to battle test their infrastructure. Kusama validators by now are very familiar with tooling, block explorers, terminology, common errors, log formats, upgrades, backups, and other aspects of node operation. This gives them an edge against Polkadot validators that may be new to the ecosystem. You should strongly consider well known Kusama validators when making your choices as a nominator on Polkadot.

Q: Can you go into more details about the process for becoming a DOT validator? Is it similar as the KSM 1000 validators program?

A (Will): The Process for becoming a DOT validators is first to have DOTs. You cannot be a validator without DOTs, as DOTs are used to pay transaction fees, and the minimum amount of DOTs you need is enough to create a validate transaction. After obtaining enough DOTs, you will need to set up your validator infrastructure. Ideally you should have a validator node with specs that match what we call standard hardware, as well as one or more sentry nodes to help isolate the validator node from attacks. After the infrastructure is up and running, you should have your Polkadot accounts set up right with a stash bonded to a controller account, and then submit a validate transaction, which will tell the network your nodes are ready to be a part of the network. You should then try and build a community around your validator to let others know you are trustworthy so that they will nominate you. The 1000 validators programme for Kusama is a programme that gives a certain amount of nominations from the Web3 Foundation and Parity to help bootstrap a community and reputation for validators. There may eventually be a similar type of programme for Polkadot as well.
Dan: Thanks a lot for all the answers, Will. That’s the end of the pre-submitted questions and now we’ll open the chat up to live Q&A, and our three team members will get through as many of your questions as possible.
We will take questions related to business development, technology, validating, and staking. For those wondering about DOT:
DOT tokens do not exist yet. Allocations of Polkadot's native DOT token are technically and legally non-transferable. Hence any publicized sale of DOTs is unsanctioned by Web3 Foundation and possibly fraudulent. Any official public sale of DOTs will be announced on the Web3 Foundation website. Polkadot’s launch process started in May and full network decentralization later this year, holders of DOT allocations will determine issuance and transferability. For those who participated in previous DOT sales, you can learn how to claim your DOTs here (https://wiki.polkadot.network/docs/en/claims).


Telegram Community Follow-up Questions Addressed Below


Q: Polkadot looks good but it confuses me that there are so many other Blockchain projects. What should I pay attention in Polkadot to give it the importance it deserves? What are your planning to achieve with your project?

A (Will): Personally, what I think differentiates it is the governance process. Coordinating forkless upgrades and social coordination helps stand it apart.
A (Dieter): The wiki is awesome - https://wiki.polkadot.network/

Q: Over 10,000 ETH paid as a transaction fee , what if this happens on Polkadot? Is it possible we can go through governance to return it to the owner?

A: Anything is possible with governance including transaction reversals, if a network quorum is reached on a topic.
A (Logan): Polkadot transaction fees work differently than the fees on Ethereum so it's a bit more difficult to shoot yourself in the foot as the whale who sent this unfortunate transaction. See here for details on fees: https://w3f-research.readthedocs.io/en/latest/polkadot/Token%20Economics.html?highlight=transaction%20fees#relay-chain-transaction-fees-and-per-block-transaction-limits
However, there is a tip that the user can input themselves which they could accidentally set to a large amount. In this cases, yes, they could proposition governance to reduce the amount that was paid in the tip.

Q: What is the minimum ideal amount of DOT and KSM to have if you want to become a validator and how much technical knowledge do you need aside from following the docs?

A (Will): It depends on what the other validators in the ecosystem are staking as well as the validator set size. You just need to be in the top staking amount of the validator set size. So if its 100 validators, you need to be in the top 100 validators by stake.

Q: Will Web3 nominate validators? If yes, which criteria to be elected?

A (Will): Web 3 Foundation is running programs like the 1000 validators programme for Kusama. There's a possibility this will continue on for Polkadot as well after transfers are enabled. https://thousand-validators.kusama.network/#/
You will need to be an active validator to earn rewards. Only those active in the validator set earn rewards. I would recommend checking out parts of the wiki: https://wiki.polkadot.network/docs/en/maintain-guides-validator-payout

Q: Is it possible to implement hastables or dag with substrate?

A (Logan): Yes.

Q: Polkadot project looks very futuristic! But, could you tell us the main role of DOT Tokens in the Polkadot Ecosystem?

A (Dan): That's a good question. The short answer is Staking, Governance, Bonding. More here: http://polkadot.network/dot-token

Q: How did you manage to prove that the consensus protocol is safe and unbreakable mathematically?

A (Dieter): We have a research teams of over a dozen scientists with PhDs and post-docs in cryptography and distributed computing who do thorough theoretical analyses on all the protocols used in Polkadot

Q: What are the prospects for NFT?

A: Already being built 🙂

Q: What will be Polkadot next roadmap for 2020 ?

A (Dieter): Building. But seriously - we will continue to add many more features and upgrades to Polkadot as well as continue to strongly focus on adoption from other builders in the ecosystem 🙂
A (Will): https://polkadot.network/launch-roadmap/
This is the launch roadmap. Ideally adding parachains and xcmp towards the end of the year

Q: How Do you stay active in terms of marketing developments during this PANDEMIC? Because I'm sure you're very excited to promote more after this settles down.

A (Dan): The main impact of covid was the impact on in-person events. We have been very active on Crowdcast for webinars since 2019, so it was quite the smooth transition to all-online events. You can see our 40+ past event recordings and follow us on Crowdcast here: https://www.crowdcast.io/polkadot. If you're interested in following our emails for updates (including online events), subscribe here: https://info.polkadot.network/subscribe

Q: Hi, who do you think is your biggest competitor in the space?

A (Dan): Polkadot is a metaprotocol that hasn't been seen in the industry up until this point. We hope to elevate the industry by providing interoperability between all major public networks as well as private blockchains.

Q: Is Polkadot a friend or competitor of Ethereum?

A: Polkadot aims to elevate the whole blockchain space with serious advancements in interoperability, governance and beyond :)

Q: When will there be hardware wallet support?

A (Will): Parity Signer works well for now. Other hardware wallets will be added pretty soon

Q: What are the attractive feature of DOT project that can attract any new users ?

A: https://polkadot.network/what-is-polkadot-a-brief-introduction/
A (Will): Buidling parachains with cross chain messaging + bridges to other chains I think will be a very appealing feature for developers

Q: According to you how much time will it take for Polkadot to get into mainstream adoption and execute all the plans set for this project?

A: We are solving many problems that have held back the blockchain industry up until now. Here is a summary in basic terms:
https://preview.redd.it/ls7i0bpm8p951.png?width=752&format=png&auto=webp&s=a8eb7bf26eac964f6b9056aa91924685ff359536

Q: When will bitpie or imtoken support DOT?

A: We are working on integrations on all the biggest and best wallet providers. ;)

Q: What event/call can we track to catch a switch to nPOS? Is it only force_new_era call? Thanks.

A (Will): If you're on riot, useful channels to follow for updates like this are #polkabot:matrix.org and #polkadot-announcements:matrix.parity.io
A (Logan): Yes this is the trigger for initiating the switch to NPoS. You can also poll the ForceEra storage for when it changes to ForceNew.

Q: What strategy will the Polkadot Team use to make new users trust its platform and be part of it?

A (Will): Pushing bleeding edge cryptography from web 3 foundation research
A (Dan): https://t.me/PolkadotOfficial/43378

Q: What technology stands behind and What are its advantages?

A (Dieter): Check out https://polkadot.network/technology/ for more info on our tech stack!

Q: What problems do you see occurring in the blockchain industry nowadays and how does your project aims to solve these problems?

A (Will): Governance I see as a huge problem. For example upgrading Bitcoin and making decisions for changing things is a very challenging process. We have robust systems of on-chain governance to help solve these coordination problems

Q: How involved are the Polkadot partners? Are they helping with the development?

A (Dieter): There are a variety of groups building in the Polkadot ecosystem. Check out http://www.polkaproject.com/ for a great list.

Q: Can you explain the role of the treasury in Polkadot?

A (Will): The treasury is for projects or people that want to build things, but don't want to go through the formal legal process of raising funds from VCs or grants or what have you. You can get paid by the community to build projects for the community.
A: There’s a whole section on the wiki about the treasury and how it functions here https://wiki.polkadot.network/docs/en/mirror-learn-treasury#docsNav

Q: Any plan to introduce Polkadot on Asia, or rising market on Asia?

**A (Will):**We're globally focused

Q: What kind of impact do you expect from the Council? Although it would be elected by token holders, what kind of people you wish to see there?

A (Will): Community focused individuals like u/jam10o that want to see cool things get built and cool communities form

If you have further questions, please ask in the official Polkadot Telegram channel.
submitted by dzr9127 to dot [link] [comments]

Let's play sweepstakes: $60 in prizes

So, we have $60 in Bitcoin Cash to give away.
The rules are simple:
1) To enter to win $50 in Bitcoin Cash post a comment here with your read.cash address like this: https://read.cash/@Read.Cash before the block hash from 2) is announced. (Optionally, you might add a short intro to your comment introducing what you write about and a few links to your interesting articles, though it's fine to just post your profile URL)
2) $10 in Bitcoin Cash will be given to the first non-edited comment that posts block #632825 hash (from here for example). It should happen approximately when this post is 22 hours old. Don't edit your comment, edited comments will be skipped. You may post your read.cash URL, bitcoincash address or we'll just PM you if you're the first unedited comment with the block hash.
3) Bitcoin Cash blockchain determines the winner
We'll take all the read.cash profile URLs below the correct hash (sorted by "new") and sort them alphabetically.
Let's say there are 12 participants.
We'll take last 6 digits from the block's hash, for example: ...5bd01f
convert it to decimal (Google "0x5bd01f to decimal") = 6017055
take a 6017055 mod number of participants (12) = Google "6017055 mod 12" = 3
So the participant #3 wins.
Note that numbering will start with zero, because "mod" ("remainder") can be zero
Only unique profile links will be considered, so don't post twice.
We'll pay $50 in Bitcoin Cash to winner's read.cash account and update this post with the winner info.
Good luck!
EDIT: Formatting
EDIT2: Added the (sorted by "new") clarification
EDIT3: Adding https://read.cash/@hamedbkh to the participants - his comment isn't visible for some reason
EDIT4: So, The winner of $10 is u/ramonoropeza ! 🎉 Congratulations!
We're compiling the list of participants and determining the winner. We'll update this in about 30 minutes!
EDIT5: Participants (sorted alphabetically)
0 https://read.cash/@Cain 1 https://read.cash/@DavidsonBCH 2 https://read.cash/@Deluanmesi 3 https://read.cash/@FUBAR 4 https://read.cash/@hamedbkh 5 https://read.cash/@Kyouma29 6 https://read.cash/@ManLikeAJ 7 https://read.cash/@mesquka 8 https://read.cash/@phabulu 9 https://read.cash/@potta 10 https://read.cash/@ralak 11 https://read.cash/@ramonoropeza 12 https://read.cash/@RandomLibertarian 13 https://read.cash/@SeanBallard 14 https://read.cash/@SofiaCBCH 15 https://read.cash/@StarLord 16 https://read.cash/@Telesfor 17 https://read.cash/@Torque 
18 participants
Block Hash: 00000000000000000461afbec5258f50fcdd13616efcc4f9719ba19a06a765ea
Last 6 digits: a765ea
Decimal is: 10970602
10970602 mod 18 = 16
The winner determined by the Bitcoin Cash blockchain is https://read.cash/@Telesfor 🎉
Congratulations!
EDIT6: Bitcoin Cash has been sent. To protect the privacy of the participants we won't show the tx hash, but if you haven't received it for some reason, please send me a message!
submitted by readcash to btc [link] [comments]

Reddcoin (#RDD) May 2020 Team Update, or “New Wallets & What to Expect when You’re Expecting PoSV v2”

Link to Medium post -> https://medium.com/@techadept/reddcoin-rdd-may-2020-team-update-or-what-to-expect-when-youre-expecting-posv-v2-b708319221ce?sk=b5eafc57b67327d99a35380f390d77ca
Hey, ReddHeads!
To new ReddHeads, welcome! To old ReddHeads, welcome back! It’s an exciting time in Reddcoin (RDD) for a lot of reasons, and we, the Reddcoin Core development team, wanted to get a brief update out to touch base on some of the highlights.
Attached are some screenshots of our work to enhance security and interoperability, and to extend support to MacOS Catalina in our newest v3.10.1 wallet.
This wallet release also includes components and performance & security upgrades taken from the Bitcoin 0.10 codebase, and we will be following much of that same development and enhancement in our Reddcoin Core wallet in the future, with 0.11 up next.
This release is not a required upgrade (except for Catalina users), but will benefit user experience and security significantly. We’ll be publishing, of course, a full public changelog, hashes and commit list in Github along with open source code and compiled executables upon release.
But the major changes in Reddcoin v3 are just about to start, as PoSV v2 gets ready to activate. Released to the community on 12/24/19, the blockchain has (at time of writing) reached 8197 of the required 9000 block threshold, or 91.08% of our goal of supermajority. If you haven’t upgraded yet, or aren’t staking, it’s time.
After PoSV v2 activation, older (v2.x, v1.x) wallets will not be able to send transactions or stake.
We anticipate activation to be reached within a very short time period, especially once our Mac ReddHeads are able to participate, and as such we want to ensure that information for the general community is available and up to date.
1) AM I GOING TO LOSE MY REDDCOIN (RDD)??
a. NO. This is a soft-fork, and whether you’ve upgraded to a v3 wallet or not, you cannot lose your coins. The blockchain itself will remain the same, it is only the rules of staking that are changing. Older wallets WILL stop functioning immediately after the threshold is passed and PoSV v2 activates, but all that is required at that point to restore functionality is to install the new v3 wallet. If you need help, please join our Telegram or Discord live chats for community or Dev help directly. No ReddHead left behind!
2) WHAT DO I NEED TO DO??
a. If you’re staking, make sure you’re using a v3 wallet, preferably the latest version. Right now, that is v3.0.1, in a few days with the above noted release it will be v3.10.1. You may also wish to use the “Backup…” function at this time to make sure you have a backup of the only important file you need, the “wallet.dat” file. There are no mobile staking options at this time due to the nature of our PoSV protocol, but you can deposit coins in the dev team-run ReddBot on Telegram to stake if you have no other options until a mobile staking option is made available.
b. If you’re not staking, or are holding on Coinomi, or Guarda, or other 3rd party wallets, or on an exchange, or a paper wallet, you will also have no operational issues, but of course you’re encouraged to help secure the network and validate transactions, by starting to stake.
3) I’M BORED. ENTERTAIN ME!
a. OK. As successful as our first meetup was, we agree. Look for an upcoming benefit concert from Reddcoin and hopscotchmafiamusic.com at the end of this month. No, really. Free awesome music, cool people, come have a bit of fun with the ReddHead community virtually!
4) I’M HUNGRY. FEED ME!
a. Well…with the activation of PoSV v2, and the creation of Reddcoin’s self- funded development mechanism, we’re very excited to be able to provide at least some resources and RDD toward the Reddcoin Community Food & Supply Bank initiative in the near future. Reddcoin Core will also be donating any funds received in connection with the above concert event to worthy and working charities, especially if we can convince them to receive RDD (or BTC). Watch for further info about this and other charity initiatives to come. Our own efforts rely on PoSV v2 activation, but will be documented publicly and transparently as they evolve.
5) I WAS USING RDD AND THEN X (or Y or Z) HAPPENED AND NOW I’M BROKE AND SAD AND ANGRY. HELP ME!
a. Perhaps you’ve not heard about Reddcoin’s uniquely conceived “Reddcoin Restitution Fund”. Been hacked? Lost a few coins when your computer crashed or your brother formatted your hard drive? Reddcoin has committed a percentage of PoSV v2 funding to give back to users legitimately affected by events beyond their control.
Cases of extreme stupidity will be vetted on a case by case basis, obviously fraudulent claims will be laughed at, and all cases will be dependent on a reasonable standard of proof and verification. This is also going to be an evolving and good faith approach to giving back to our real ReddHead community, and will require both transparency and abuse-prevention to be successful, but we look forward to being able to help those who deserve and need it. NOTE: Trading and speculative losses aren’t covered in any of this. Obviously.
6) I WANT TO KNOW MORE!
We’re working right now to rebuild our main website www.reddcoin.com into a more informative and resource-rich site, but it’s a good starting point. We are in the process of updating our roadmap to cover the end of 2020 and the future as well, and both of those should be available and will be announced within the next month.
a. www.medium.com/@techadept
b. www.reddcoin.com/reddpaper and https://reddcoin.com/reddpaper-faq/
c. www.twitter.com/@reddcoin
d. www.reddit.com/reddcoin
e. https://t.me/ReddcoinOfficial (Telegram chat)
g. https://www.facebook.com/reddcoin
7) IS TECHADEPT DRINKING WHILE WRITING THIS UPDATE??
a. Yes. Macallan. Fight me.
submitted by TechAdept to reddCoin [link] [comments]

A Beginners Guide To Setting Up A Full Node On Your PC

Hello there, I thought I would write a quick guide on setting up a full node on your PC as I've seen a lot of posts about full nodes around recently.

What is a full node?

From Bitcoin Wiki: "Any computer that connects to the Bitcoin network is called a node. Nodes that fully verify all of the rules of Bitcoin are called full nodes."
Full nodes are essential for keeping Bitcoin in the hands of the people (decentralised). If you want to accept payments in Bitcoin it is also recommended for security reasons that you use your own full node. For more info on full nodes, click me.

Hardware Requirements:

Bitcoin nodes can be run on worse specs, but it is recommended that you have the following specification when running a full node on your PC:

Getting Set Up:

Once the blockchain is downloaded and verified you are the official owner of a Bitcoin full node! It's that easy! This guide was intended to be simple and easy to follow. For more in-depth instructions and troubleshooting advice feel free to leave a comment or visit https://bitcoin.org/en/full-node#what-is-a-full-node.
Hope that helped :)

edit 1: Formatting
submitted by HarryRobso to Bitcoin [link] [comments]

Hide and Seek

An old friend of mine emailed this to me a while back with the subject line “Hide and Seek” and I’ve been hesitant to post it for reasons that should become obvious as you read it. That said, I feel that enough time has gone by for this to be safe so I’m going to post it here. The only edits I’ve made were swapping out names and formatting, otherwise it’s all exactly as he sent it.
T, if you’re reading this then message me. I want to know if you’re alright, and if you are I know you’ll be looking for this story to show up.
This is what the email said:
Rijento,
I’m writing this story because I feel like I need an outlet. I swear to god that you better actually check your email for once in your damn life!
Please…
As for if you actually are reading this, I want you to wait as long as your (admittedly) better judgment tells you to wait and then post this story online. I know it’s a bit vain, but I want people to know my story. Hell, it might be the last one I ever tell. Double hell, it might actually even help some poor soul out.
I’m going to disappear after sending this, hopefully the good kind of disappear and not the death kind. I know nobody but you is going to believe this story but damn if typing this out didn’t make my sorry ass feel better. You were right about that man, I’m sorry for giving you shit for writing so much…
This is the attached file. “Hide and Seek”:
Before I get in to the ‘hiding’ and ‘seeking’ I have a bit of a confession that needs to be made. I work as a transporter for a deep web black market site… I hope it doesn’t change your opinion of me too much, sorry for not telling you sooner.
I’m the guy they call when they get an order for something they can’t send through the mail. Guns and live animals are two good examples. You’d be pretty hyped to know how many rich assholes just order lions and tigers from the dark web.
For obvious reasons, I can’t go in to too much detail, I don’t want to make any dangerous enemies and even after this I still don’t want to lose my job. It’s a pretty sweet gig all things considered, all I have to do is pick up from the seller and deliver to the buyer. I can even choose what jobs I want to take, lets me cling to what little principles I still have. And I DO have principles. After a few years working for the site, my two rules were: no people and no crossing borders.
Anyways, I got into a bit of a bind with the cryptocurrency crash that happened early this year. The site mostly pays in Bitcoin and, well, I decided to let my wallet sit and grow. By the time I realized what happened, my savings were destroyed. Nobody expected it to crash that hard… And it probably wouldn’t have been as much of a problem if I hadn’t also gotten used to living a life full of the finer things. I didn’t really ‘save’ all that much to begin with either. So when my savings finally ran dry and the market was still down, I decided to… Lower my standards a bit and take a riskier, higher paying job.
Organ transport.
I haven’t done it before… I hadn’t been that broke in a long time. Organ jobs pay well too, and I figured I still wasn’t strictly breaking my ‘no people’ rule if it was just their organs. So, I hopped on the site and browsed through the pitiful number of requests in my area till I found what I was looking for. A rich buyer who: had shady connections, was in need of some organs, and lacked either the time or patience to wait for them to come legally. As far as these sort of requests went, this was pretty much the norm from what I’d heard. So I accepted the job and got an email with some additional details about the order: the customer needed two kidneys (which was what I was to transport) and a liver (which they had made a separate request for).
From what other people on the site have told me, what should have happened was the job would move to the ‘seeking seller’ section and I’d be on hold till someone… ‘_acquired_’ the kidneys.
What actually happened probably should have tipped me off to use my monthly free withdraw… I got a notification two hours later that there was a seller.
Rijento, I don’t know how much you know about medicine, but if you do know anything then you’re probably squirming in your own skin about right now. For those who may or may not be reading this that are not in the know, not only do the donor and receiver have to have compatible blood types but kidneys only last about a day outside of a warm body.
Not exactly a product you can stockpile.
I got another email, about the pickup this time, and began the internal debate between the bad feeling in my gut and my empty wallet… You can probably guess which one of them won out… Anyways, I planned my route; one hour to get to the seller and four hours to get from there to the buyer. I sent the site my plan and within minutes they approve of it and set up an actual meeting point. I sighed and grabbed my things, trying to swallow my nerves the entire hour it took me to reach the meeting point.
I sat down on a bench in a city park and waited for what seemed like ages before I felt someone staring at me. It took me a solid minute to pick out who it was even though there were only a few people around. He was sitting with his back to me at a picnic table about ten yards away from me and whenever I looked away I could feel his eyes on me. When we eventually did make eye-contact he bounced excitedly in his seat and waved me over; my heart sank as he also slid a small case into my line of sight.
I forced myself to smile, walked over, sat down, and hid my annoyance. Most of the buyers on the site were practically carbon copies of each other. Probably because you could only become a buyer if another buyer knew and endorsed you. The sellers, on the other hand, were all certifiably insane.
None of the other transporters I’d chatted with had ever met with a ‘normal’ seller. Because of this, all of them quickly learned to keep conversation to a minimum and to not under any circumstances piss any of them off. I decided to follow in their example.
The man sitting in front of me looked friendly enough, overly so if anything. He was scrawny, didn’t look like he would be strong enough to… well… kill someone and harvest their insides. He had a strange smile on his face, and even now I can’t get it out of my head. The kind of overly friendly, wide toothed smile that mothers warned their children to stay away from. It somehow managed to be both inviting and creepy at the same time.
I smiled back and spoke up, “So you’re the seller then?” I asked, and the man nodded.
He nodded and responded in a sickeningly sweet voice… He sounded like a child in a toy store, his voice strained with excitement and wonder as he droned on to his parents about what toys he wanted.
“Oh I’m so glad you found me. For a minute there I thought I’d have to call ‘olly olly oxen free.’” He said with a pleased sigh, pushing the case to my side of the table. “You know… Over the years I’ve gotten quite good at playing hide and seek. So good, in fact, that I’ve never been found. Not. Even. Once. Do you want to know my secret?” the man asked, his voice still just as unsettlingly sweet as his smile.
“Sure, what’s your secret?” I asked. I really, really didn’t want to know what the hell he was talking about; but if it kept him happy then…
He clapped rapidly and bounced in place, “Oh I’m so glad that you’re a curious one. My secret is that the seekers never know that they’re playing.”
“Makes sense…” I said, opening the case momentarily to verify. Two kidneys in pristine condition, doused with preserving fluid, wrapped in plastic. and packed in ice. “If the seeker doesn’t know they’re playing then how would they know to start looking?” I said, leaving out the fact that it would just be stalking at that point before swallowing hard when I thought about where these kidneys came from.
“You’re a smart one…” he said with a smile as I sent a message confirming the pickup. All that was left was to wait for the transaction to process. “I was worried about this last one though… she came right up to me. This. Close.” he said, leaning in till our faces almost touched.
I struggled to keep my composure, and managed to keep from jumping or pushing him away. “So what did you do?” I asked as he leaned back, my suspicions about these kidneys being all but confirmed.
“Why, nothing of course…” He said, a slightly bewildered expression on his face. He looked as though I just asked him how to breathe. I glanced down at my phone to see if the transaction had been verified yet and he snapped his fingers like he remembered something. “Oh I must apologize!” he said, making me look up, “I forgot that you don’t play much… I simply held my breath, closed my eyes, and wished that she would just… go away.”
“You’re right… You are good at hide and seek...” I said, wishing to myself that he would just go away and hearing the familiar ding of a successful transaction sound on both of our phones as if to answer my prayers. I reached out my hand as a formality and he grabbed it and shook it vigorously. I forced a smile and stood, although what he said next made my blood nearly freeze.
“You’re the first person to find me in oh so long…” He trailed off as he said it, his voice slowly shifting from that of an exited child to the cold blooded maniac that he was. “Maybe my games won’t be so one sided from now on,” He said, his voice disturbingly normal. Although, even without looking back I could tell that the same sickeningly sweet smile was glued to his face. I kept walking but waved my arm as though saying goodbye.
The worst part was that I could feel him watching me as I walked back to my car… Not just at first, like if he was watching me leave, but the entire way back, and even as I got in my car. I took a moment to look around and sighed as I saw nothing. It might not sound like much to you. I don’t know, I can still hardly describe it myself, but he had this… creepy way of getting under your skin just by talking to you.
I wrote it off as me just being paranoid, the guy harvests organs from people for a living so of course everything he says is creepy. I groaned and started my car, but it wasn’t until I hit the freeway that I was finally able to shake the feeling of his gaze. It’s not like he could’ve been following me, by then I was already paranoid enough to be checking for that, making a few detours just to be sure of it.
And because of my detours, I ended up being about an hour past the scheduled drop off with the buyer… Lost my chance at a tip for sure, guy was furious and there was nothing I could tell him to calm him down. I’m pretty sure, ‘sorry I’m late, but the seller was a total psycho and I wanted to make sure he wasn’t following me,’ wouldn’t have been a very good excuse.
Whatever, I had my money and the buyer had his organs and plenty of time for whatever operation that used them. Not much to complain about on either side, well except for the fact that I already knew I wouldn’t be sleeping that night. Especially because the feeling of being watched had returned as soon as I set foot out of my car which was, again, impossible. The site never tells the sellers anything about the buyers or transporters, so there’s no way he could have known where I was headed to and no way that he could have followed me.
I hopped back in my car and started to head for home, hoping that a few tabs of melatonin would be enough for at least a few hours of sleep. And again, I could feel eyes on me as I drove and I saw his eerie smile everywhere until I hit the highway. I felt a weight lift off of my shoulders then, although I made sure to take the most winding path home that I could afford gas for (which was quite a bit after a job like that). By the time I did get home it was starting to get dark, and I had made a few loops around my apartment just to be sure I didn’t still feel his eyes on me.
Luckily, my apartment building has a public parking garage attached to it so even if I was being followed I felt safe enough that nobody would be able to find my room. But Just to be sure, I took the stairs for the first time in months.
Have any of you ever climbed seven flights of stairs out of paranoia before Rijento? Well in case you haven’t let me tell you what it’s like. Do you remember running up the stairs from the basement after turning off the lights as a kid? That feeling of unease and terror? Well it’s like that, but you aren’t a kid anymore. It’s not the dark or what imaginary monsters could be lurking in it that frightens you anymore. Instead, you’re worried about who could be hiding in the darkness, what real monster could be following you up those stairs… I’m no slouch when it comes to exercise but it still drained everything out of me hauling my body up those stairs on my hands and feet like an animal as fast as I could.
I got inside and locked the door securely behind me, panting, covered in sweat, but I sighed in relief with the fact that I hadn’t felt anyone watching me at all during my climb. I took a moment to catch my breath, slumping down by the door and chuckling to myself while shaking my head. I couldn’t believe that I’d let that freak get so deep under my skin.
Once I had caught my breath, I stood up and made my way to my couch before flopping onto it. I wanted nothing more than to go to sleep then and there, but I had to be smart with my money this time. I immediately cashed the Bitcoin out. Better to pay myself out in small increments, but I had bills to pay and I’d already learned my lesson about leaving things in Bitcoin.
Once business was taken care of, I grabbed the remote control and flicked on the TV. The familiar faces of the local news anchors greeted me and I began drifting off to sleep while listening to the happenings of our city.
It was around seven a.m. when I was woken up by the sound of the ‘breaking news’ alert coming on.
“We are just receiving reports of a ghastly murder of one [yeah, I’m not gonna put her name or age here] year old college student living on her own. Police investigators say that several of her organs were found to be missing and that they found evidence of someone living in her home without her knowledge for quite some time before the murder…”
The reporters kept talking about how much of a tragedy the situation was… But I wasn’t listening. How could I listen…
I’ve never been less happy to be right then I was at that moment. I shuddered thinking about it. My thoughts and paranoia regarding the man I’d met the other day bubbling back up to the surface. It was then that the reality of what I’d done hit me like a freight train. By accepting that contract I doomed that girl to die… All because I needed some quick cash.
I stood up and went to the kitchen and opened my liquor cabinet. Without looking, I grabbed a bottle of something with shaking hands and fumbled with the top while trying to keep my mind clear of thoughts. Once I had the cap off I took several deep swigs from the bottle, spilling quite a bit down my chin before I set it down and gasped for air.
The burn of the alcohol in my throat gave me something to focus on while it worked its magic on the rest of my body. As my mind slowly clouded I found my way to a chair and found it easier to think about what happened without panicking.
My first thought was that I needed to do something. I knew the guy’s face, I should go to the cops! It was at this moment that the… Less impulsive side of my brain kicked in. I go to the cops and all I do is give myself a one way ticket to an early grave. My employers don’t take kindly to police interactions.
I slowly resigned myself to the fact that I was going to have to live with the consequences of this job for the rest of my life… I’m a coward, I know.
Anyways, the next few days passed by slowly. I was… Not in a good place mentally and I’m sure you remember how much alcohol my cabinets were stocked with. I blacked out more than once only to wake up gasping for breath from drinking too much. It was honestly a miracle that I didn’t kill myself through alcohol poisoning.
But I… Managed to come to terms with everything. Don’t get me wrong, I still had nightmares where I was the guy hiding in that girls closet… But I wasn’t drinking my problems away anymore, although I think that was more because of the fact that I’d run out of liquor than any meaningful character development.
It was about a week later that I was able to get my first night of actual sleep. I didn’t dream about anything either so that was a plus. I know it probably sounds bad, but I was starting to feel normal again… Like I could maybe find a way to just be myself…
Either way, even after all that I still wanted to keep my job. I just added a new rule: no organs.
From there I fell back into more or less my old routine. I went to eat out almost every day though, I thought any excuse that got me cleaned up and out of my place was worth taking…
And then, I began to feel it again. That skin-crawling sensation of eyes on me from somewhere that I felt the day I met Mr. Hide&Seek. I didn’t think much of it at first, I only felt the eyes when I was surrounded by other people so of course one or two would be looking my way right? I thought I was just guilty and paranoid.
But no matter what I did, I would always feel like I was being watched whenever other people were around. So I started driving more and more and eating out less and less. Not driving anywhere in particular, just driving… I felt safe on the open road, I couldn’t feel any eyes on me… For about a week.
It started small. A shiver down my spine here and there. A sharp sensation that made my eyes snap to one car or another. Then it came more frequently, and I began to get more and more paranoid as the feeling became stronger and stronger.
I started driving less and less, and whenever I did, I kept my eyes on the cars around me. Trying desperately to find where that feeling was coming from. To find who was watching me… Trying to catch a glimpse of his face in a passing car.
I even thought I did see him a few times… Except that was just paranoia… I hope.
Eventually, I stopped driving unless I had to. I shut myself in my apartment, only going out to get groceries and always, always making sure that I didn’t feel anyone watching me before I parked. But that feeling would always find me whenever I went out.
This went on for about a month. I started to drink again, I didn’t go out to eat or drive anymore. I paid someone to deliver my groceries to the garage of my building. All I did was eat, sleep, drink, and watch movies or play games… I’d be living the dream, if I didn’t think a serial killer was stalking me.
Part of me believed that I was just being paranoid and to be honest I desperately wanted to believe that part of me… But not enough to stake my life on it. And after another week of living like a shut-in the feeling of being watched started to re-surface.
Like before it started off small. I felt a ping of eyes on me and from then on I kept the blinds securely closed. Even then, the feeling persisted for days, gradually gathering in strength. So I emptied out all of my closets and cabinets daily… Eventually I just left all of the doors open and everything on the floor so that I could look in to any hiding spot in an instant…
But that feeling still persisted.
I stopped drinking because I was terrified of being attacked. I started sleeping less and less and when I had to sleep, I slept inside of my closet and barred the doors shut from the inside. I ate and drank only when I felt hungry and always with my back to a corner of the room or locked in my closet… But I could still feel eyes on me, feel His eyes on me the same way I had back at the park.
It was about a month later when I finally discovered my haven. The one place left that I didn’t feel watched. The stairwell of my building. I found that whenever I went down and back up the stars to get my groceries – as I’d long since stopped using the elevator – that I would have a brief respite from the feeling of being watched.
I started to spend all of my waking hours there, sat on one of the stairs without a care in the world. I only left them to eat and sleep and whenever I entered the building proper I would feel eyes on me almost immediately. But having those stairs to return to made my life almost bearable. It had been a long time since I had anywhere I felt safe, and like every place before it I kept waiting form the feeling of being watched to follow me into the stairwell…
But it never did.
For another month, I fell into a somewhat bearable rhythm. I’d wake up in my closet feeling watched, I’d eat in the corner of my kitchen feeling watched, and then I’d scurry off to the stairwell where I could blessedly feel alone – Especially near the top floors where the stairs were seldom used.
But all good things must come to an end and all that, and while I never did feel watched in the stairs, I did run out of money. Apartments and cars don’t pay for themselves after all, and while I managed a few months on the blood money from my last job it was finally time to get back to work.
In the months since I last logged on to the site, things had calmed down significantly and there were now plenty of jobs that didn’t break any of my rules… So I decided to go with a route that I’d done before a couple of times. A gun run. The seller always treated me to a drink or two at his bar and was also always well armed so I felt that it would be a nice and easy job that I could feel safe doing.
After confirming the job I closed my laptop, pulled on a fresh set of clothing, and headed out the door. I wanted to get this over and done with, and thankfully the feeling of being watched was rather light that day. I do admit, however, that I lingered in the stairwell for a bit before heading out. I wanted a bit of time alone before being out in the open for the first time in months.
Anyways, I hopped in my car after about thirty minutes of blessed stairwell time and headed to the bar. After about two hours of paranoid and twisting driving I managed to make it just on time and pulled my car into the alleyway behind the bar.
The owner greeted me with a smile as I got out of my car, “T, long time no see!” he said, his smile fading as I walked up and he got a better look at me. “Holy shit man, are you feeling okay?” he asked, genuine worry in the eyes of the large man.
“No… I’m pretty far from okay…” I said with an exhausted sigh. I could still feel the faintest hint of eyes on me even now, though I know that the owner wouldn’t let me be jumped at his bar. “It’s a long story,” I offered, realizing for the first time that it might be nice to actually tell someone what happened.
“Is that so.” he said with a hint of a smile and a shake of his head. “Well, hows about we get you a drink while the boys get ready to load up your car.” He offered in return, making me smile. “There’s always plenty of time for stories at my bar.” He said proudly.
“I’d like that…” I said with another exhausted sigh, managing to keep the smile up as he put an arm around me and lead me in the back door of the bar.
“Oh, by the way, how did you hold up during the bitcoin crash? I heard it hit a couple of transporters pretty hard.” he said, making me chuckle as we made our way through the kitchen.
“Funny you should mention that,” I said, making him raise an eyebrow, “because that’s how my long story star—” I began, only to stop short when I looked at the bar.
HE was siting there, sipping on a beer without a care in the world. He noticed me out of the corner of his eye and that same sickeningly sweet smile crept onto his face as his eyes met mine.
I froze. There was no way that this was a coincidence. There was no way that he just happened to be at this bar at this time.
I was broken from my trance by the bar owner waving his hand in front of my face and saying my name, “Hello? T, you alright?”
I quickly ducked back into the kitchen and started to hyperventilate. How did he know? How could he possibly have known that I would be here? Did he follow me?
“Did who follow you?” The owner’s voice brought me back to reality once again as I realized I’d been thinking out loud. His face was concerned, bordering on scared.
“How long has that guy been at the bar?” I asked, hoping that the owner knew who I was talking about.
“If you mean tall, thin, and creepy then about an hour… What is going on T?” He asked, as I slumped against the wall.
I started crying. I broke down and burst back into the bar only to see that Mr. Hide&Seek he was already gone. “I… I need to go. I need to get home!” I said, pushing past the owner and running to my car. He called after me, trying to get me to stay and explain what the hell was happening but I wasn’t listening. For all I know, Mr. Hide&Seek could be breaking in to my apartment already.
I drove straight home and threw open the door to my apartment. It had still been locked, but I wasn’t taking any chances. I grabbed a knife from the kitchen and checked everywhere. But he wasn’t there.
Then, my phone rang and scared the living hell out of me. I checked the number and gulped when I saw that it was blocked. I considered not answering but in the end I picked up the call.
“H-Hello?” I asked tentatively.
“T… What the hell happened at the bar?” a modulated voice rang through the speaker in my ear, making me wince. It was one of the site admins for sure.
I was silent for a moment before telling the admin everything. I couldn’t see the man, but I could feel a sudden change when I mentioned seeing Mr. Hide&Seek at the bar.
“T,” the admin began, a serious edge to his voice. “I need you to log in to the site… _Now_” he said, and something in me told me to listen. I booted up my laptop and hopped on to the site. As soon as I logged in a dialog appeared that I’d never seen before.
ADMIN would like to take control of this computer. Do you consent to this?’ With two buttons. One for yes. One for no.
I clicked yes and watched as my cursor began to move on it’s own. “Thank you T. This will only take a moment…” the admin said, a practiced calm in his voice as he downloaded several files and began to do… Something on my laptop.
A minute later a dialog box popped up that said, ‘Threat detected!’ and the admin sighed and his voice sharpened as he spoke. “T… You’ve been compromised. You’ve had a nasty piece of spyware installed on your machine, for about a month by the looks of things. It’s been recording your keystrokes and giving someone remote access to your camera…” the admin explained, making me gulp as I realized that all of my information was insecure.
“B-but, there’s no way! I haven’t download anything!” I said, making the admin mutter something as a bout of typing could be heard coming through the phone.
The admin’s voice was cold and calculated when he spoke next. “No… No you didn’t…” he said, making me gulp. “This software was installed via _USB_…” the admin said, making my heart nearly stop.
Hide&Seek had been in my home! He had been here without me noticing and put that program on my laptop. Even after all of my paranoia, he still found his way into my room without me knowing.
“I’m going to delete the program,” the admin said, and a few keystrokes later, “done… What the—”
As the admin deleted the program, thousands of windows began popping up on the screen of my laptop. All of them saying the same thing…
‘olly olly oxen free’
After that, I threw my laptop in the trash and got a new one as well as a new phone, sim card and all. I was taking no chances. I got all new accounts for everything and the admin told me he revoked Mr. Hide&Seek’s membership personally.
But I’m going to disappear all the same, I have a plane ticket to somewhere and my bags are already packed.
Don’t look for me, and if you ever start to feel like you’re being watched… It’s because you are.
submitted by rijento to DrCreepensVault [link] [comments]

Large-scale updates of Tkeycoin. What’s next? — listing on the crypto exchange. Are you with us?

Large-scale updates of Tkeycoin. What’s next? — listing on the crypto exchange. Are you with us?

https://preview.redd.it/ojtx6mauve151.png?width=700&format=png&auto=webp&s=8dd727076d495d4b624a307775e64ae83ce31c76
Hello, everyone, It’s been a long time since you heard our team, someone thought we were gone, someone was waiting, and someone disappeared himself.
All this time we have worked hard to bring you good news. We will tell you what we have prepared for you, what events will be soon, what you can use right now and what else will be new in the year. And so, let’s go!

Preparing for listing on the exchange

The pandemic period played into the hands of the entire team and we managed to build beauty in our services. In anticipation of the exchange, the team tidied up the sites and services and connected new tools. First of all, we paid attention to the preparation of all services for a foreign audience, taking into account its mentality.
New sections, localizations, nice things, and much more to ensure the most efficient use of the TKEY resource. In addition to the new tabs, the services that we will talk about in this material, there is a special page for representatives of the exchange with the necessary documentation for listing — https://tkeycoin.com/en/documentation/.

https://preview.redd.it/63a1cmdwve151.png?width=700&format=png&auto=webp&s=0a064bff4acd1c1e3171f2c72ff79533b87aa3e1

Full localization

Already today the official website tkeycoin.com available in 5 languages: Russian, English, Korean, Chinese (Simplified), Chinese (Traditional).

https://preview.redd.it/xbiodqixve151.png?width=700&format=png&auto=webp&s=dd81e99cb792d62a3ebb397d2181a2f1d0de5ac8
We made adjustments to the Russian and English versions of the site, including support for Korean and Chinese for each section of the site. Professionals in their field, native speakers translated and adapted the information as it should be, and we, in turn, structured and framed it properly. So welcome!

https://preview.redd.it/hcnhws2zve151.png?width=700&format=png&auto=webp&s=30b53c5c4f3c192c39518f66941dcfdfc5b420f5
We will update language support for the site, and soon it will include support for all languages that are available in the mobile app.

QR Codes for Asian Audience


https://preview.redd.it/bv08bzm0we151.png?width=496&format=png&auto=webp&s=338ba001c3a5d6999347165e7bd725b5be7f4913
Our friends and residents of Asian countries actively use QR codes in their lives, both when paying in stores and when working with websites. QR codes are used almost everywhere when renting a car or bike, we just open the phone, scan and the mode of transport becomes available for use, anything is available for rent, even a battery, even an umbrella.
“It was a hot May day. Seven-year-old Wang Jiaozui came out of school and saw his grandfather, who came to pick him up. He was standing in the sun, and his shirt was soaked with sweat. Jiaozui invited the grandfather to buy a cold Cola in the shop, but he forgot her purse at home. It turned out that this is not important — the boy took his grandfather’s smartphone and called the payment app with a QR code on the screen.” ©
What to say if QR codes are used even to identify entire farms. By pasting QR codes on farm buildings and then scanning them, government inspectors can quickly figure out who owns the building and whether its owners are violating any laws.

https://preview.redd.it/jsw2tza2we151.png?width=700&format=png&auto=webp&s=38cbb849b6c2a2aecd8b42c7d786a397d901b2cf
We must be on the trend! Now a special library generates QR codes for the desired page, any tab on the site tkeycoin.com in Chinese and Korean-accompanied by a QR code that leads to the requested page: fast, convenient, and simple.
https://preview.redd.it/73rscop3we151.png?width=700&format=png&auto=webp&s=c83229e56d612450370b43b06910225701454c60
Providing this opportunity to our colleagues and future users of Tkeycoin from Asia is a friendly approach and most importantly, a strategic step on our part. After implementing QR codes, we are undoubtedly drawn into the convenience of this function, which we recommend to You:) If you like it, we will make QR codes on the Russian and English versions of the site.

Buying and withdrawing cryptocurrency to a Bankcard


https://preview.redd.it/9i8ykpv5we151.png?width=700&format=png&auto=webp&s=3a31d0a463de5e08f94a5b27a472fb8b53ab044e
On the site, you can now buy Bitcoin for pound, dollars, euro, and any other currency. This is a powerful automated service for instant exchange of fiat currencies for cryptocurrencies. The system works around the clock and seven days a week, allowing everyone to conduct exchanges at any time of the day and in the shortest possible time.
Withdrawal to a Bank card will be available until the end of the month, we finish the details, the page is available now, and the withdrawal itself will be activated during this week. You can buy Bitcoin, Ethereum, or any other currency right now.

https://preview.redd.it/o8z0c4b7we151.png?width=700&format=png&auto=webp&s=b4d684f09acd914316c986482b8dadf88718c618
These features are the future for the function of purchasing any product or service for TKEY at any point of sale, which will form the basis of the mobile app, quickly, conveniently, and most importantly, observing the letter of the law.
All we do is build an Empire that is being built before your eyes. Every service and product is connected, so any update promises the appearance of even more cool and effective features than before.

Buying cryptocurrency for pound, dollars, euros, and other currencies

At the end of February, we told you that we are working on building a payment service that will include the provision of services: buy cryptocurrencies, sell a cryptocurrency, withdraw cryptocurrency to Bank cards, etc.
This day has come, now you can buy Bitcoin (BTC), Ethereum (ETH), Tether USDT, Basic Attention Token (BAT), Algorand (ALGO), Tron (TRX), OKB (Token Okex.com).

https://preview.redd.it/1pm2cnv8we151.png?width=700&format=png&auto=webp&s=69473d2e5ed1b8dc75189362b46906752be29895
The purchase is available in any currency: Russian ruble, US Dollar, Euro, British pound, Ukrainian hryvnia, Indonesian rupiah, South Korean won, Japanese yen, Turkish Lira, Argentine peso.
As you can see, the currency corridors are quite extensive, which allows you to make exchanges fast and at a favorable rate. Just choose the right pair to exchange or buy, available fiat currencies: RUB, USD, EUR, GBP, UAH, IDR, KRW, JPY, TRY, ARS, available cryptocurrencies: BTC, ETH, BAT, USDT, ALGO, TRX, OKB.
Even if this wide list does not include the currency you want to buy, such as Bitcoin or USDT, it’s okay — the service will automatically convert your currency into the payment currency and the Bank will make the exchange. Exchanges take place within 1–3 minutes, it is enough to pass quick verification once, which allows you to work with a volume of > 15,000 euros per month.

https://preview.redd.it/0ln5uttawe151.png?width=700&format=png&auto=webp&s=35de9e413db35bb53f39332aa4197cd54a3e211c

Exchange of cryptocurrencies for pound, dollars, euros, and withdrawal of Bankcard

In addition to the fact that you can now easily buy a cryptocurrency for fiat currencies, pound, dollars or any other, during this week we will finish work on the withdrawal to a Bank card and you can easily withdraw your profit to the card, the most important thing is that this is a completely legal method, and all operations pass through banks and jurisdictions where work with digital assets is legalized.
This means that when you buy or make a withdrawal to the card, you get legal funds that are credited to you by the Bank or payment system.
If you are used to working with effective tools that work in a new way, or rather correctly and legally, then this service is for you. Fast crediting, easy exchange, a large selection of currency pairs, that’s what the company is betting on.
We work with the most reliable third-party partners to make your cryptocurrency process easy and convenient, and most importantly safe for You. The service supports plastic and virtual Bank cards VISA, MasterCard, MIR, and other payment systems for fast payment processing.

https://preview.redd.it/x1jnm1ccwe151.png?width=700&format=png&auto=webp&s=f86fc353ad5f207db8d233821204b521ba0b3d0e
On the exchange page, you can choose any currency pair to exchange in the opposite direction, for example, GBP to BTC or USD to BTC. Choose a suitable pair for exchange, available fiat currencies: RUB, USD, EUR, GBP, UAH, IDR, KRW, JPY, TRY, ARS, available cryptocurrencies for exchange: BTC, ETH, BAT, USDT, ALGO, TRX, OKB.
How it works
When buying cryptocurrency for the first time, your Bank reserves (holds) the requested amount, then this amount is transferred to the authorization waiting state. As soon as the Bank freezes the fiat funds, the service fixes the exchange rate at the time of creating the application, reserves the cryptocurrency, and provides you with 30–40 minutes to complete verification. After successful verification, the service charges cryptocurrency to the wallet.

Quick verification

Verification takes 2–3 minutes and requires only one time to perform operations every day. The “Know Your Customer” (KYC) procedure is necessary to exchange cryptocurrencies for fiat currencies.

https://preview.redd.it/3y0pmzrdwe151.png?width=597&format=png&auto=webp&s=01a92651b67f2df70f83082cfcd3d1fdee5491b4
As you understand, you need to pass verification 1 time, regardless of whether you withdraw funds or buy currency, after passing verification, all services are available to You without any further confirmation.

New currency

Support for other currencies, including TKEY, will be added gradually and highlighted through service updates. As for the TKEY exchange, it will become available in exchange services after listing on the exchange. Listing on an exchange allows you to automate the exchange process, link the necessary services, and most importantly, the exchange provides liquidity, which is key when we talk about exchanging for a particular currency.
We will tell you more about the operation of the service and its advantages, chips, in a separate material dedicated to the withdrawal and purchase of cryptocurrencies for fiat currencies, as well as touch on various banking issues and tell you how you can combine the SWAP service for more efficient exchange and withdrawal to the card.

Charitable activity

By making an exchange or purchase of cryptocurrency, you help children and people who need our help. We deduct 0.1% of the profit from each transaction to charity funds.
This is the fastest and most comfortable way of charity, which allows you to bring together people who are not indifferent to other people’s problems. TKEY enables people to do good deeds, and the resulting turnover profit of 0.1% is sent to charity funds every month. Together with You, we create new opportunities for people in need who need help — “Big things have small beginnings”.
How does it work?
You have made an exchange or purchase operation, the company has accumulated the volume of these operations for a month->the company has chosen a charity Fund->sent funds to the charity Fund’s account. Priority charity funds are children’s aid funds. You can always suggest a candidate for a particular Fund by sending a message to [[email protected]](mailto:[email protected]).
Why do we write Funds and not a Fund?
This is the first launch of the service, so depending on the monthly volume, we will focus on distributing funds to one charity or several. For example, if we have accumulated $ 10,000, we can distribute $ 5,000 to 2 funds. if we have accumulated $ 100, it is logical that we will only send this amount to 1 Fund. With the development of the service, we will be able to focus on several funds, which we will actively help due to the received volume.

New sections, improvements for existing services

Menu logic and site structure

The menu logic has been revised. now more items are available on the menu and they are divided into sections. Navigation through the sections has become much easier and more convenient. for some sections, QR codes are available for Russian and English-speaking audiences, and for representatives of Asian countries, all sections are available by QR code.

https://preview.redd.it/d9ntj1hfwe151.png?width=700&format=png&auto=webp&s=6c068daa450e5f824829a9457bc1bc183615f466

TKEYSPACE Promo Page

New blocks were added, the entire page was fully localized and is available in Chinese, Korean, English and Russian, and QR codes were added for easy navigation for the Asian audience.

Documentation for the exchange

We have already mentioned that there is a section for exchanges with the necessary documentation for listing, now it is available in English. In the next updates, it will be translated into Russian, Chinese (Traditional and Simplified), and Korean.

Market Data (Coin Data)

The market data section has been optimized for mobile apps. Charts are expanded and optimized page borders for most mobile devices, and you can search for cryptocurrencies and tokens that interest you.

https://preview.redd.it/fkuhl0vgwe151.png?width=700&format=png&auto=webp&s=67450a04bdba376da59aee1d0e5a0964c896475e

FAQ

Added answers to frequently asked questions in various sections of the site, You can find the information directly on the section page, for example, TKEY-QT, SWAP or Core. Right on the page there is a FAQ section, in which we disclose answers to questions, for example: How are You going to solve the scalability problem, or why did you choose Phoenix as the logo and symbol of the project, or how do you exchange cryptocurrency for pound or dollars? As you can see, you can get answers to different questions, depending on the topic of the site section.

https://preview.redd.it/8utkvv6iwe151.png?width=700&format=png&auto=webp&s=d493ec784d74c5982486e36fe3b4bcbcb6d57335

Footer

For convenience, the site’s footer has been expanded and new sections (quick tabs) are included, which are also available in the QR-code format. In addition to various details, the footer is now accompanied by the company’s coat of arms — the Phoenix, which is the symbol of the entire community, the Phoenix Alliance.

https://preview.redd.it/xija83vjwe151.png?width=700&format=png&auto=webp&s=dd7ce476b53ebe2a891d32231725650bac7ba181

Page 404

Added page 404, which is also an integral part of the site. now when you go to a non-existent site page, all the necessary menu items are fully available to us, which will quickly Orient You and direct you to the desired section.

https://preview.redd.it/i8f7qi9lwe151.png?width=700&format=png&auto=webp&s=02449b35c631bcb0667336edb4f912cbcf1dfb58

What is waiting for us in the nearest future?

In addition to various improvements, connecting services, our team has been working every day on other main areas of the Tkeycoin project, which are already being prepared for the next release and we will tell you what updates, what plans, events, and what else will be interesting this year.

Online conference with management

An online conference in question-answer format will be organized. The main task of the conference, in addition to questions and answers, is to discuss plans, talk about new directions, touch on issues of legislation, and analyze current issues of users.
The online meeting format will allow you to get feedback and discuss a large number of issues in a short time. Questions related to technical support and other questions that can be answered through the administration will not be discussed.
The meeting involves the development, constructive, and suggestions from users for further development of the Tkeycoin project. If you are interested in participating in the conference, you can also make business proposals during it, please use the time to your advantage. We work for you.

New content: reports, new categories, useful information

Based on user feedback, we introduce new categories to our content plan:
Reports This section will be accompanied by information about the work done by the team for the month, the format of submission — abstracts, highlights. This format will help establish feedback between users and developers.
Question-answer
In addition to the content that we produce ourselves, users have questions that arise during the process of working with the project’s services, as well as during interaction with the project itself. To avoid making guesses and making up stories, we have introduced the question-answer category.
Users ask questions in comments, and the company prepares answers based on the questions and they are published in the post. Depending on the number of questions, the post generates all the answers, or the post is divided into parts if the number of questions for the past period was the largest. In addition to asking questions, you can make suggestions to the project, for example, about new features or directions.
This format also builds feedback and helps to improve all services. the most important thing is that it can not only help us but also you, as the offer and questions will help you focus on the tasks that the end-user wants to see.

TKEY-POOL (Tkeycoin pool)

We are completing the work and debugging of the official pool for Tkeycoin, this is a completely new approach for mining Tkeycoin. The pool will feature higher performance and stable architecture, a light interface, and objective commissions.
A pool is a highly loaded system that works 24/7/365, it turns out that such a product hides a sufficient number of lines of code and, most importantly, is built on a reliable architecture that can withstand +50000–100000 miners, not to mention the number of connected devices for this number of miners.
A cryptocurrency pool is a combination of the hardware power of many miners at once to increase the probability of finding a block. The reward for a block obtained by the pool is distributed among all participants.
The TKEY pool is developed taking into account the features of the Tkeycoin blockchain, including multi-blockchain, transaction model, hashing, blocks, and other nuances that are an upgrade of the blockchain among others. Together with the pool, the TKEY network is being tested: high loads, attacks, and other tests that show positive results, proving that the TKEY blockchain can work under any loads and is protected from attacks.
Our task was to: 1. Stable system for handling high loads; 2. Adaptation pool for any software; 3. Connecting any hardware for mining cryptocurrency Tkeycoin; 4. Fair remuneration calculation; 5. Security.
The main goal is for any user, regardless of the software and hardware used, to be able to connect to Tkeycoin mining via a pool. The first releases will be accompanied by a simple user-friendly interface, easy connection, instructions for various mining programs that can be connected.
In future releases, we will optimize the operation of the pool, add new features, as well as tracking functions and other nice things. any suggestions from miners and the community are interesting to us and will be implemented, so do not hesitate to send your suggestions after the launch.

TKEYSPACE updates


https://preview.redd.it/fjy2dkanwe151.png?width=700&format=png&auto=webp&s=99dedd6aa59ae7eb4d585d2ef1ddae4cc6dd50f9
Work on the TkeySpace mobile app is also not standing still. We will soon release updates for TkeySpace on Android and iOS.
This release is a complete transition to the most stable version of the mobile wallet. This means that after the update, even with the largest changes, the user will not need to completely reinstall or restore to use the new features, as before, just update the app via the AppStore or GooglePlay.
Between the previous update has been a sufficient amount of time, on average, updates are released once a month. This update will be one of the major ones. We are finishing work on the code to prepare the app for the new features that will be available this year. Besides, we are improving the app’s logic, data processing speed, optimizing the code, restoring order, and preparing for the global market.

Exchange, purchase of cryptocurrency and withdrawal to the Debit/Credit Card


https://preview.redd.it/1maxjrqowe151.png?width=700&format=png&auto=webp&s=cefd5bf1ec823049eeb25640c470024a41c0430c
In addition to pleasant optimizations, the app will display the exchange and withdrawal to a Bankcard, tab with an optimized page for exchange, withdrawal, and the purchase will be available directly in the mobile app. This upgrade will also capture the cryptocurrency exchange SWAP page, which can be evaluated after the update. Other features and new features will be announced by the developers immediately after the release.

SWAP Update

The development team is finishing work on optimizing the SWAP service. Regardless of updates, it is available in working mode 24/7/365. The team is working on improving the operation, optimizing the page, changing the interfaces, improving navigation, and speeding up query processing. This update is also among the upcoming ones, along with the pool, mobile wallets, and other news that will excite.

Network Statistics

In the network statistics section, there are several sections that will be fixed — this is the hash rate of the network and the volume of Tkeycoin. Now the volume of Tkeycoin is displayed by mTKEY, and the graph itself indicates M TKEY, the user may incorrectly understand the volume of transactions in the network, so, given the current volume, it is advisable to switch the display to TKEY, and in the future switch to mTKEY for large volumes.
TKEY is divided into cryptograms (CryptoGramm, cgr), uTKEY (keys), and mTKEY. 1 TKEY = 100 000 000 cryptograms. 1 mTKEY = 100,000 cryptograms. 1 TKEY contains 1000 mTKEY. 1 mTKEY = 0.00100000 TKEY 1 uTKEY =100 cryptograms 1 TKEY contains 1,000,000 utkeys. 1 uTKEY (keys) = 0.00000100 TKEY 1 cgr = 0.00000001 TKEY

Cryptocurrency Exchange

This issue has become the cause of mass discussions, disputes, investigations, the subject of memes, kitchen, and online conversations, that just did not happen, that TKEY is not taken anywhere, someone made guesses that we are waiting for everyone to run away, or TKEY is a world conspiracy and around some actors, you can write a book or shoot a great series, not worse than Breaking Bad.
Jokes, jokes, but the question is serious. Since the 4th quarter of last year, the company has been actively working on the issue of listing, prepared the necessary platform for this, held several meetings, negotiations, released the necessary products, figured out various transfers of funds to the blockchain, worked out many small things, many major issues that were behind the scenes. Everything is ready, and it’s time to start soon. This will be a surprise, believe it or not, and we will meet you on the stock exchanges :)

What other plans does the company have?

Enabling payment at retail outlets

After entering the exchange, we will actively engage in connecting payments to implement them and link them to TKEY. The plan, strategy, and legal component are ready.

Payment development

This implies the development of payments and services that will expand the use of digital currencies in the commercial sphere. Application on the territory of Russia will depend on the Federal law on the CFA, in any case, we plan to analyze the law, after its release, to find a legal way to implement payments based on blockchain and digital assets. Therefore, until the law is released, we are keeping this initiative in the future, and we will work on other jurisdictions that will support it.
We left some plans behind the scenes, because they will make the greatest impact on the market and the value of our asset, and this — likes silence.

What useful materials will be released soon?

How to effectively use the SWAP service together with the exchange and purchase of cryptocurrency from a Bank card?

We will tell you in detail how to use these 2 services, how to save on payments and purchases, how to exchange tokens that are very difficult to exchange, how to quickly get money for them to the card, and much more.

The law CFA

Our opinion about the law of cryptocurrencies in Russia, what to pay attention to, what to prepare for, how to act if there is a complete ban. Let’s talk about legal nuances and banking practices.

TKEY blockchain

In this material, we will talk about the blockchain, analyze the issues of the system, expand the questions on attacks, payment processing, and touch on the system of multiple chains. The article suggests your suggestions, perhaps someone will have ideas that we will implement in the chain.
At the end,
Don’t forget to ask questions in the comments or send suggestions to [[email protected]](mailto:[email protected]) we will be happy to respond and consider your requests for any of our services. Collaboration, feedback, help us make the whole platform better.
Thank you for being with us! Until new meetings, stay tuned for news, updates, because the most unexpected news comes spontaneously.
submitted by tkeycoin to Tkeycoin_Official [link] [comments]

FlowCards: A Declarative Framework for Development of Ergo dApps

FlowCards: A Declarative Framework for Development of Ergo dApps
Introduction
ErgoScript is the smart contract language used by the Ergo blockchain. While it has concise syntax adopted from Scala/Kotlin, it still may seem confusing at first because conceptually ErgoScript is quite different compared to conventional languages which we all know and love. This is because Ergo is a UTXO based blockchain, whereas smart contracts are traditionally associated with account based systems like Ethereum. However, Ergo's transaction model has many advantages over the account based model and with the right approach it can even be significantly easier to develop Ergo contracts than to write and debug Solidity code.
Below we will cover the key aspects of the Ergo contract model which makes it different:
Paradigm
The account model of Ethereum is imperative. This means that the typical task of sending coins from Alice to Bob requires changing the balances in storage as a series of operations. Ergo's UTXO based programming model on the other hand is declarative. ErgoScript contracts specify conditions for a transaction to be accepted by the blockchain (not changes to be made in the storage state as result of the contract execution).
Scalability
In the account model of Ethereum both storage changes and validity checks are performed on-chain during code execution. In contrast, Ergo transactions are created off-chain and only validation checks are performed on-chain thus reducing the amount of operations performed by every node on the network. In addition, due to immutability of the transaction graph, various optimization strategies are possible to improve throughput of transactions per second in the network. Light verifying nodes are also possible thus further facilitating scalability and accessibility of the network.
Shared state
The account-based model is reliant on shared mutable state which is known to lead to complex semantics (and subtle million dollar bugs) in the context of concurrent/ distributed computation. Ergo's model is based on an immutable graph of transactions. This approach, inherited from Bitcoin, plays well with the concurrent and distributed nature of blockchains and facilitates light trustless clients.
Expressive Power
Ethereum advocated execution of a turing-complete language on the blockchain. It theoretically promised unlimited potential, however in practice severe limitations came to light from excessive blockchain bloat, subtle multi-million dollar bugs, gas costs which limit contract complexity, and other such problems. Ergo on the flip side extends UTXO to enable turing-completeness while limiting the complexity of the ErgoScript language itself. The same expressive power is achieved in a different and more semantically sound way.
With the all of the above points, it should be clear that there are a lot of benefits to the model Ergo is using. In the rest of this article I will introduce you to the concept of FlowCards - a dApp developer component which allows for designing complex Ergo contracts in a declarative and visual way.
From Imperative to Declarative
In the imperative programming model of Ethereum a transaction is a sequence of operations executed by the Ethereum VM. The following Solidity function implements a transfer of tokens from sender to receiver . The transaction starts when sender calls this function on an instance of a contract and ends when the function returns.
// Sends an amount of existing coins from any caller to an address function send(address receiver, uint amount) public { require(amount <= balances[msg.sender], "Insufficient balance."); balances[msg.sender] -= amount; balances[receiver] += amount; emit Sent(msg.sender, receiver, amount); } 
The function first checks the pre-conditions, then updates the storage (i.e. balances) and finally publishes the post-condition as the Sent event. The gas which is consumed by the transaction is sent to the miner as a reward for executing this transaction.
Unlike Ethereum, a transaction in Ergo is a data structure holding a list of input coins which it spends and a list of output coins which it creates preserving the total balances of ERGs and tokens (in which Ergo is similar to Bitcoin).
Turning back to the example above, since Ergo natively supports tokens, therefore for this specific example of sending tokens we don't need to write any code in ErgoScript. Instead we need to create the ‘send’ transaction shown in the following figure, which describes the same token transfer but declaratively.
https://preview.redd.it/id5kjdgn9tv41.png?width=1348&format=png&auto=webp&s=31b937d7ad0af4afe94f4d023e8c90c97c8aed2e
The picture visually describes the following steps, which the network user needs to perform:
  1. Select unspent sender's boxes, containing in total tB >= amount of tokens and B >= txFee + minErg ERGs.
  2. Create an output target box which is protected by the receiver public key with minErg ERGs and amount of T tokens.
  3. Create one fee output protected by the minerFee contract with txFee ERGs.
  4. Create one change output protected by the sender public key, containing B - minErg - txFee ERGs and tB - amount of T tokens.
  5. Create a new transaction, sign it using the sender's secret key and send to the Ergo network.
What is important to understand here is that all of these steps are preformed off-chain (for example using Appkit Transaction API) by the user's application. Ergo network nodes don't need to repeat this transaction creation process, they only need to validate the already formed transaction. ErgoScript contracts are stored in the inputs of the transaction and check spending conditions. The node executes the contracts on-chain when the transaction is validated. The transaction is valid if all of the conditions are satisfied.
Thus, in Ethereum when we “send amount from sender to recipient” we are literally editing balances and updating the storage with a concrete set of commands. This happens on-chain and thus a new transaction is also created on-chain as the result of this process.
In Ergo (as in Bitcoin) transactions are created off-chain and the network nodes only verify them. The effects of the transaction on the blockchain state is that input coins (or Boxes in Ergo's parlance) are removed and output boxes are added to the UTXO set.
In the example above we don't use an ErgoScript contract but instead assume a signature check is used as the spending pre-condition. However in more complex application scenarios we of course need to use ErgoScript which is what we are going to discuss next.
From Changing State to Checking Context
In the send function example we first checked the pre-condition (require(amount <= balances[msg.sender],...) ) and then changed the state (i.e. update balances balances[msg.sender] -= amount ). This is typical in Ethereum transactions. Before we change anything we need to check if it is valid to do so.
In Ergo, as we discussed previously, the state (i.e. UTXO set of boxes) is changed implicitly when a valid transaction is included in a block. Thus we only need to check the pre-conditions before the transaction can be added to the block. This is what ErgoScript contracts do.
It is not possible to “change the state” in ErgoScript because it is a language to check pre-conditions for spending coins. ErgoScript is a purely functional language without side effects that operates on immutable data values. This means all the inputs, outputs and other transaction parameters available in a script are immutable. This, among other things, makes ErgoScript a very simple language that is easy to learn and safe to use. Similar to Bitcoin, each input box contains a script, which should return the true value in order to 1) allow spending of the box (i.e. removing from the UTXO set) and 2) adding the transaction to the block.
If we are being pedantic, it is therefore incorrect (strictly speaking) to think of ErgoScript as the language of Ergo contracts, because it is the language of propositions (logical predicates, formulas, etc.) which protect boxes from “illegal” spending. Unlike Bitcoin, in Ergo the whole transaction and a part of the current blockchain context is available to every script. Therefore each script may check which outputs are created by the transaction, their ERG and token amounts (we will use this capability in our example DEX contracts), current block number etc.
In ErgoScript you define the conditions of whether changes (i.e. coin spending) are allowed to happen in a given context. This is in contrast to programming the changes imperatively in the code of a contract.
While Ergo's transaction model unlocks a whole range of applications like (DEX, DeFi Apps, LETS, etc), designing contracts as pre-conditions for coin spending (or guarding scripts) directly is not intuitive. In the next sections we will consider a useful graphical notation to design contracts declaratively using FlowCard Diagrams, which is a visual representation of executable components (FlowCards).
FlowCards aim to radically simplify dApp development on the Ergo platform by providing a high-level declarative language, execution runtime, storage format and a graphical notation.
We will start with a high level of diagrams and go down to FlowCard specification.
FlowCard Diagrams
The idea behind FlowCard diagrams is based on the following observations: 1) An Ergo box is immutable and can only be spent in the transaction which uses it as an input. 2) We therefore can draw a flow of boxes through transactions, so that boxes flowing in to the transaction are spent and those flowing out are created and added to the UTXO. 3) A transaction from this perspective is simply a transformer of old boxes to the new ones preserving the balances of ERGs and tokens involved.
The following figure shows the main elements of the Ergo transaction we've already seen previously (now under the name of FlowCard Diagram).
https://preview.redd.it/9kcxl11o9tv41.png?width=1304&format=png&auto=webp&s=378a7f50769292ca94de35ff597dc1a44af56d14
There is a strictly defined meaning (semantics) behind every element of the diagram, so that the diagram is a visual representation (or a view) of the underlying executable component (called FlowCard).
The FlowCard can be used as a reusable component of an Ergo dApp to create and initiate the transaction on the Ergo blockchain. We will discuss this in the coming sections.
Now let's look at the individual pieces of the FlowCard diagram one by one.
  1. Name and Parameters
Each flow card is given a name and a list of typed parameters. This is similar to a template with parameters. In the above figure we can see the Send flow card which has five parameters. The parameters are used in the specification.
  1. Contract Wallet
This is a key element of the flow card. Every box has a guarding script. Often it is the script that checks a signature against a public key. This script is trivial in ErgoScript and is defined like the def pk(pubkey: Address) = { pubkey } template where pubkey is a parameter of the type Address . In the figure, the script template is applied to the parameter pk(sender) and thus a concrete wallet contract is obtained. Therefore pk(sender) and pk(receiver) yield different scripts and represent different wallets on the diagram, even though they use the same template.
Contract Wallet contains a set of all UTXO boxes which have a given script derived from the given script template using flow card parameters. For example, in the figure, the template is pk and parameter pubkey is substituted with the `sender’ flow card parameter.
  1. Contract
Even though a contract is a property of a box, on the diagram we group the boxes by their contracts, therefore it looks like the boxes belong to the contracts, rather than the contracts belong to the boxes. In the example, we have three instantiated contracts pk(sender) , pk(receiver) and minerFee . Note, that pk(sender) is the instantiation of the pk template with the concrete parameter sender and minerFee is the instantiation of the pre-defined contract which protects the miner reward boxes.
  1. Box name
In the diagram we can give each box a name. Besides readability of the diagram, we also use the name as a synonym of a more complex indexed access to the box in the contract. For example, change is the name of the box, which can also be used in the ErgoScript conditions instead of OUTPUTS(2) . We also use box names to associate spending conditions with the boxes.
  1. Boxes in the wallet
In the diagram, we show boxes (darker rectangles) as belonging to the contract wallets (lighter rectangles). Each such box rectangle is connected with a grey transaction rectangle by either orange or green arrows or both. An output box (with an incoming green arrow) may include many lines of text where each line specifies a condition which should be checked as part of the transaction. The first line specifies the condition on the amount of ERG which should be placed in the box. Other lines may take one of the following forms:
  1. amount: TOKEN - the box should contain the given amount of the given TOKEN
  2. R == value - the box should contain the given value of the given register R
  3. boxName ? condition - the box named boxName should check condition in its script.
We discuss these conditions in the sections below.
  1. Amount of ERGs in the box
Each box should store a minimum amount of ERGs. This is checked when the creating transaction is validated. In the diagram the amount of ERGs is always shown as the first line (e.g. B: ERG or B - minErg - txFee ). The value type ascription B: ERG is optional and may be used for readability. When the value is given as a formula, then this formula should be respected by the transaction which creates the box.
It is important to understand that variables like amount and txFee are not named properties of the boxes. They are parameters of the whole diagram and representing some amounts. Or put it another way, they are shared parameters between transactions (e.g. Sell Order and Swap transactions from DEX example below share the tAmt parameter). So the same name is tied to the same value throughout the diagram (this is where the tooling would help a lot). However, when it comes to on-chain validation of those values, only explicit conditions which are marked with ? are transformed to ErgoScript. At the same time, all other conditions are ensured off-chain during transaction building (for example in an application using Appkit API) and transaction validation when it is added to the blockchain.
  1. Amount of T token
A box can store values of many tokens. The tokens on the diagram are named and a value variable may be associated with the token T using value: T expression. The value may be given by formula. If the formula is prefixed with a box name like boxName ? formula , then it is should also be checked in the guarding script of the boxName box. This additional specification is very convenient because 1) it allows to validate the visual design automatically, and 2) the conditions specified in the boxes of a diagram are enough to synthesize the necessary guarding scripts. (more about this below at “From Diagrams To ErgoScript Contracts”)
  1. Tx Inputs
Inputs are connected to the corresponding transaction by orange arrows. An input arrow may have a label of the following forms:
  1. [email protected] - optional name with an index i.e. [email protected] or u/2 . This is a property of the target endpoint of the arrow. The name is used in conditions of related boxes and the index is the position of the corresponding box in the INPUTS collection of the transaction.
  2. !action - is a property of the source of the arrow and gives a name for an alternative spending path of the box (we will see this in DEX example)
Because of alternative spending paths, a box may have many outgoing orange arrows, in which case they should be labeled with different actions.
  1. Transaction
A transaction spends input boxes and creates output boxes. The input boxes are given by the orange arrows and the labels are expected to put inputs at the right indexes in INPUTS collection. The output boxes are given by the green arrows. Each transaction should preserve a strict balance of ERG values (sum of inputs == sum of outputs) and for each token the sum of inputs >= the sum of outputs. The design diagram requires an explicit specification of the ERG and token values for all of the output boxes to avoid implicit errors and ensure better readability.
  1. Tx Outputs
Outputs are connected to the corresponding transaction by green arrows. An output arrow may have a label of the following [email protected] , where an optional name is accompanied with an index i.e. [email protected] or u/2 . This is a property of the source endpoint of the arrow. The name is used in conditions of the related boxes and the index is the position of the corresponding box in the OUTPUTS collection of the transaction.
Example: Decentralized Exchange (DEX)
Now let's use the above described notation to design a FlowCard for a DEX dApp. It is simple enough yet also illustrates all of the key features of FlowCard diagrams which we've introduced in the previous section.
The dApp scenario is shown in the figure below: There are three participants (buyer, seller and DEX) of the DEX dApp and five different transaction types, which are created by participants. The buyer wants to swap ergAmt of ERGs for tAmt of TID tokens (or vice versa, the seller wants to sell TID tokens for ERGs, who sends the order first doesn't matter). Both the buyer and the seller can cancel their orders any time. The DEX off-chain matching service can find matching orders and create the Swap transaction to complete the exchange.
The following diagram fully (and formally) specifies all of the five transactions that must be created off-chain by the DEX dApp. It also specifies all of the spending conditions that should be verified on-chain.

https://preview.redd.it/fnt5f4qp9tv41.png?width=1614&format=png&auto=webp&s=34f145f9a6d622454906857e645def2faba057bd
Let's discuss the FlowCard diagram and the logic of each transaction in details:
Buy Order Transaction
A buyer creates a Buy Order transaction. The transaction spends E amount of ERGs (which we will write E: ERG ) from one or more boxes in the pk(buyer) wallet. The transaction creates a bid box with ergAmt: ERG protected by the buyOrder script. The buyOrder script is synthesized from the specification (see below at “From Diagrams To ErgoScript Contracts”) either manually or automatically by a tool. Even though we don't need to define the buyOrder script explicitly during designing, at run time the bid box should contain the buyOrder script as the guarding proposition (which checks the box spending conditions), otherwise the conditions specified in the diagram will not be checked.
The change box is created to make the input and output sums of the transaction balanced. The transaction fee box is omitted because it can be added automatically by the tools. In practice, however, the designer can add the fee box explicitly to the a diagram. It covers the cases of more complex transactions (like Swap) where there are many ways to pay the transaction fee.
Cancel Buy, Cancel Sell Transactions
At any time, the buyer can cancel the order by sending CancelBuy transaction. The transaction should satisfy the guarding buyOrder contract which protects the bid box. As you can see on the diagram, both the Cancel and the Swap transactions can spend the bid box. When a box has spending alternatives (or spending paths) then each alternative is identified by a unique name prefixed with ! (!cancel and !swap for the bid box). Each alternative path has specific spending conditions. In our example, when the Cancel Buy transaction spends the bid box the ?buyer condition should be satisfied, which we read as “the signature for the buyer address should be presented in the transaction”. Therefore, only buyer can cancel the buy order. This “signature” condition is only required for the !cancel alternative spending path and not required for !swap .
Sell Order Transaction
The Sell Order transaction is similar to the BuyOrder in that it deals with tokens in addition to ERGs. The transaction spends E: ERG and T: TID tokens from seller's wallet (specified as pk(seller) contract). The two outputs are ask and change . The change is a standard box to balance transaction. The ask box keeps tAmt: TID tokens for the exchange and minErg: ERG - the minimum amount of ERGs required in every box.
Swap Transaction
This is a key transaction in the DEX dApp scenario. The transaction has several spending conditions on the input boxes and those conditions are included in the buyOrder and sellOrder scripts (which are verified when the transaction is added to the blockchain). However, on the diagram those conditions are not specified in the bid and ask boxes, they are instead defined in the output boxes of the transaction.
This is a convention for improved usability because most of the conditions relate to the properties of the output boxes. We could specify those properties in the bid box, but then we would have to use more complex expressions.
Let's consider the output created by the arrow labeled with [email protected] . This label tells us that the output is at the index 0 in the OUTPUTS collection of the transaction and that in the diagram we can refer to this box by the buyerOut name. Thus we can label both the box itself and the arrow to give the box a name.
The conditions shown in the buyerOut box have the form bid ? condition , which means they should be verified on-chain in order to spend the bid box. The conditions have the following meaning:
  • tAmt: TID requires the box to have tAmt amount of TID token
  • R4 == bid.id requires R4 register in the box to be equal to id of the bid box.
  • script == buyer requires the buyerOut box to have the script of the wallet where it is located on the diagram, i.e. pk(buyer)
Similar properties are added to the sellerOut box, which is specified to be at index 1 and the name is given to it using the label on the box itself, rather than on the arrow.
The Swap transaction spends two boxes bid and ask using the !swap spending path on both, however unlike !cancel the conditions on the path are not specified. This is where the bid ? and ask ? prefixes come into play. They are used so that the conditions listed in the buyerOut and sellerOut boxes are moved to the !swap spending path of the bid and ask boxes correspondingly.
If you look at the conditions of the output boxes, you will see that they exactly specify the swap of values between seller's and buyer's wallets. The buyer gets the necessary amount of TID token and seller gets the corresponding amount of ERGs. The Swap transaction is created when there are two matching boxes with buyOrder and sellOrder contracts.
From Diagrams To ErgoScript Contracts
What is interesting about FlowCard specifications is that we can use them to automatically generate the necessary ErgoTree scripts. With the appropriate tooling support this can be done automatically, but with the lack of thereof, it can be done manually. Thus, the FlowCard allows us to capture and visually represent all of the design choices and semantic details of an Ergo dApp.
What we are going to do next is to mechanically create the buyOrder contract from the information given in the DEX flow card.
Recall that each script is a proposition (boolean valued expression) which should evaluate to true to allow spending of the box. When we have many conditions to be met at the same time we can combine them in a logical formula using the AND binary operation, and if we have alternatives (not necessarily exclusive) we can put them into the OR operation.
The buyOrder box has the alternative spending paths !cancel and !swap . Thus the ErgoScript code should have OR operation with two arguments - one for each spending path.
/** buyOrder contract */ { val cancelCondition = {} val swapCondition = {} cancelCondition || swapCondition } 
The formula for the cancelCondition expression is given in the !cancel spending path of the buyOrder box. We can directly include it in the script.
/** buyOrder contract */ { val cancelCondition = { buyer } val swapCondition = {} cancelCondition || swapCondition } 
For the !swap spending path of the buyOrder box the conditions are specified in the buyerOut output box of the Swap transaction. If we simply include them in the swapCondition then we get a syntactically incorrect script.
/** buyOrder contract */ { val cancelCondition = { buyer } val swapCondition = { tAmt: TID && R4 == bid.id && @contract } cancelCondition || swapCondition } 
We can however translate the conditions from the diagram syntax to ErgoScript expressions using the following simple rules
  1. [email protected] ==> val buyerOut = OUTPUTS(0)
  2. tAmt: TID ==> tid._2 == tAmt where tid = buyerOut.tokens(TID)
  3. R4 == bid.id ==> R4 == SELF.id where R4 = buyerOut.R4[Coll[Byte]].get
  4. script == buyer ==> buyerOut.propositionBytes == buyer.propBytes
Note, in the diagram TID represents a token id, but ErgoScript doesn't have access to the tokens by the ids so we cannot write tokens.getByKey(TID) . For this reason, when the diagram is translated into ErgoScript, TID becomes a named constant of the index in tokens collection of the box. The concrete value of the constant is assigned when the BuyOrder transaction with the buyOrder box is created. The correspondence and consistency between the actual tokenId, the TID constant and the actual tokens of the buyerOut box is ensured by the off-chain application code, which is completely possible since all of the transactions are created by the application using FlowCard as a guiding specification. This may sound too complicated, but this is part of the translation from diagram specification to actual executable application code, most of which can be automated.
After the transformation we can obtain a correct script which checks all the required preconditions for spending the buyOrder box.
/** buyOrder contract */ def DEX(buyer: Addrss, seller: Address, TID: Int, ergAmt: Long, tAmt: Long) { val cancelCondition: SigmaProp = { buyer } // verify buyer's sig (ProveDlog) val swapCondition = OUTPUTS.size > 0 && { // securing OUTPUTS access val buyerOut = OUTPUTS(0) // from [email protected] buyerOut.tokens.size > TID && { // securing tokens access val tid = buyerOut.tokens(TID) val regR4 = buyerOut.R4[Coll[Byte]] regR4.isDefined && { // securing R4 access val R4 = regR4.get tid._2 == tAmt && // from tAmt: TID R4 == SELF.id && // from R4 == bid.id buyerOut.propositionBytes == buyer.propBytes // from script == buyer } } } cancelCondition || swapCondition } 
A similar script for the sellOrder box can be obtained using the same translation rules. With the help of the tooling the code of contracts can be mechanically generated from the diagram specification.
Conclusions
Declarative programming models have already won the battle against imperative programming in many application domains like Big Data, Stream Processing, Deep Learning, Databases, etc. Ergo is pioneering the declarative model of dApp development as a better and safer alternative to the now popular imperative model of smart contracts.
The concept of FlowCard shifts the focus from writing ErgoScript contracts to the overall flow of values (hence the name), in such a way, that ErgoScript can always be generated from them. You will never need to look at the ErgoScript code once the tooling is in place.
Here are the possible next steps for future work:
  1. Storage format for FlowCard Spec and the corresponding EIP standardized file format (Json/XML/Protobuf). This will allow various tools (Diagram Editor, Runtime, dApps etc) to create and use *.flowcard files.
  2. FlowCard Viewer, which can generate the diagrams from *.flowcard files.
  3. FlowCard Runtime, which can run *.flowcard files, create and send transactions to Ergo network.
  4. FlowCard Designer Tool, which can simplify development of complex diagrams . This will make designing and validation of Ergo contracts a pleasant experience, more like drawing rather than coding. In addition, the correctness of the whole dApp scenario can be verified and controlled by the tooling.
submitted by Guilty_Pea to CryptoCurrencies [link] [comments]

FlowCards: A Declarative Framework for Development of Ergo dApps

FlowCards: A Declarative Framework for Development of Ergo dApps
Introduction
ErgoScript is the smart contract language used by the Ergo blockchain. While it has concise syntax adopted from Scala/Kotlin, it still may seem confusing at first because conceptually ErgoScript is quite different compared to conventional languages which we all know and love. This is because Ergo is a UTXO based blockchain, whereas smart contracts are traditionally associated with account based systems like Ethereum. However, Ergo's transaction model has many advantages over the account based model and with the right approach it can even be significantly easier to develop Ergo contracts than to write and debug Solidity code.
Below we will cover the key aspects of the Ergo contract model which makes it different:
Paradigm
The account model of Ethereum is imperative. This means that the typical task of sending coins from Alice to Bob requires changing the balances in storage as a series of operations. Ergo's UTXO based programming model on the other hand is declarative. ErgoScript contracts specify conditions for a transaction to be accepted by the blockchain (not changes to be made in the storage state as result of the contract execution).
Scalability
In the account model of Ethereum both storage changes and validity checks are performed on-chain during code execution. In contrast, Ergo transactions are created off-chain and only validation checks are performed on-chain thus reducing the amount of operations performed by every node on the network. In addition, due to immutability of the transaction graph, various optimization strategies are possible to improve throughput of transactions per second in the network. Light verifying nodes are also possible thus further facilitating scalability and accessibility of the network.
Shared state
The account-based model is reliant on shared mutable state which is known to lead to complex semantics (and subtle million dollar bugs) in the context of concurrent/ distributed computation. Ergo's model is based on an immutable graph of transactions. This approach, inherited from Bitcoin, plays well with the concurrent and distributed nature of blockchains and facilitates light trustless clients.
Expressive Power
Ethereum advocated execution of a turing-complete language on the blockchain. It theoretically promised unlimited potential, however in practice severe limitations came to light from excessive blockchain bloat, subtle multi-million dollar bugs, gas costs which limit contract complexity, and other such problems. Ergo on the flip side extends UTXO to enable turing-completeness while limiting the complexity of the ErgoScript language itself. The same expressive power is achieved in a different and more semantically sound way.
With the all of the above points, it should be clear that there are a lot of benefits to the model Ergo is using. In the rest of this article I will introduce you to the concept of FlowCards - a dApp developer component which allows for designing complex Ergo contracts in a declarative and visual way.

From Imperative to Declarative

In the imperative programming model of Ethereum a transaction is a sequence of operations executed by the Ethereum VM. The following Solidity function implements a transfer of tokens from sender to receiver . The transaction starts when sender calls this function on an instance of a contract and ends when the function returns.
// Sends an amount of existing coins from any caller to an address function send(address receiver, uint amount) public { require(amount <= balances[msg.sender], "Insufficient balance."); balances[msg.sender] -= amount; balances[receiver] += amount; emit Sent(msg.sender, receiver, amount); } 
The function first checks the pre-conditions, then updates the storage (i.e. balances) and finally publishes the post-condition as the Sent event. The gas which is consumed by the transaction is sent to the miner as a reward for executing this transaction.
Unlike Ethereum, a transaction in Ergo is a data structure holding a list of input coins which it spends and a list of output coins which it creates preserving the total balances of ERGs and tokens (in which Ergo is similar to Bitcoin).
Turning back to the example above, since Ergo natively supports tokens, therefore for this specific example of sending tokens we don't need to write any code in ErgoScript. Instead we need to create the ‘send’ transaction shown in the following figure, which describes the same token transfer but declaratively.
https://preview.redd.it/sxs3kesvrsv41.png?width=1348&format=png&auto=webp&s=582382bc26912ff79114d831d937d94b6988e69f
The picture visually describes the following steps, which the network user needs to perform:
  1. Select unspent sender's boxes, containing in total tB >= amount of tokens and B >= txFee + minErg ERGs.
  2. Create an output target box which is protected by the receiver public key with minErg ERGs and amount of T tokens.
  3. Create one fee output protected by the minerFee contract with txFee ERGs.
  4. Create one change output protected by the sender public key, containing B - minErg - txFee ERGs and tB - amount of T tokens.
  5. Create a new transaction, sign it using the sender's secret key and send to the Ergo network.
What is important to understand here is that all of these steps are preformed off-chain (for example using Appkit Transaction API) by the user's application. Ergo network nodes don't need to repeat this transaction creation process, they only need to validate the already formed transaction. ErgoScript contracts are stored in the inputs of the transaction and check spending conditions. The node executes the contracts on-chain when the transaction is validated. The transaction is valid if all of the conditions are satisfied.
Thus, in Ethereum when we “send amount from sender to recipient” we are literally editing balances and updating the storage with a concrete set of commands. This happens on-chain and thus a new transaction is also created on-chain as the result of this process.
In Ergo (as in Bitcoin) transactions are created off-chain and the network nodes only verify them. The effects of the transaction on the blockchain state is that input coins (or Boxes in Ergo's parlance) are removed and output boxes are added to the UTXO set.
In the example above we don't use an ErgoScript contract but instead assume a signature check is used as the spending pre-condition. However in more complex application scenarios we of course need to use ErgoScript which is what we are going to discuss next.

From Changing State to Checking Context

In the send function example we first checked the pre-condition (require(amount <= balances[msg.sender],...) ) and then changed the state (i.e. update balances balances[msg.sender] -= amount ). This is typical in Ethereum transactions. Before we change anything we need to check if it is valid to do so.
In Ergo, as we discussed previously, the state (i.e. UTXO set of boxes) is changed implicitly when a valid transaction is included in a block. Thus we only need to check the pre-conditions before the transaction can be added to the block. This is what ErgoScript contracts do.
It is not possible to “change the state” in ErgoScript because it is a language to check pre-conditions for spending coins. ErgoScript is a purely functional language without side effects that operates on immutable data values. This means all the inputs, outputs and other transaction parameters available in a script are immutable. This, among other things, makes ErgoScript a very simple language that is easy to learn and safe to use. Similar to Bitcoin, each input box contains a script, which should return the true value in order to 1) allow spending of the box (i.e. removing from the UTXO set) and 2) adding the transaction to the block.
If we are being pedantic, it is therefore incorrect (strictly speaking) to think of ErgoScript as the language of Ergo contracts, because it is the language of propositions (logical predicates, formulas, etc.) which protect boxes from “illegal” spending. Unlike Bitcoin, in Ergo the whole transaction and a part of the current blockchain context is available to every script. Therefore each script may check which outputs are created by the transaction, their ERG and token amounts (we will use this capability in our example DEX contracts), current block number etc.
In ErgoScript you define the conditions of whether changes (i.e. coin spending) are allowed to happen in a given context. This is in contrast to programming the changes imperatively in the code of a contract.
While Ergo's transaction model unlocks a whole range of applications like (DEX, DeFi Apps, LETS, etc), designing contracts as pre-conditions for coin spending (or guarding scripts) directly is not intuitive. In the next sections we will consider a useful graphical notation to design contracts declaratively using FlowCard Diagrams, which is a visual representation of executable components (FlowCards).
FlowCards aim to radically simplify dApp development on the Ergo platform by providing a high-level declarative language, execution runtime, storage format and a graphical notation.
We will start with a high level of diagrams and go down to FlowCard specification.

FlowCard Diagrams

The idea behind FlowCard diagrams is based on the following observations: 1) An Ergo box is immutable and can only be spent in the transaction which uses it as an input. 2) We therefore can draw a flow of boxes through transactions, so that boxes flowing in to the transaction are spent and those flowing out are created and added to the UTXO. 3) A transaction from this perspective is simply a transformer of old boxes to the new ones preserving the balances of ERGs and tokens involved.
The following figure shows the main elements of the Ergo transaction we've already seen previously (now under the name of FlowCard Diagram).
https://preview.redd.it/06aqkcd1ssv41.png?width=1304&format=png&auto=webp&s=106eda730e0526919aabd5af9596b97e45b69777
There is a strictly defined meaning (semantics) behind every element of the diagram, so that the diagram is a visual representation (or a view) of the underlying executable component (called FlowCard).
The FlowCard can be used as a reusable component of an Ergo dApp to create and initiate the transaction on the Ergo blockchain. We will discuss this in the coming sections.
Now let's look at the individual pieces of the FlowCard diagram one by one.
1. Name and Parameters
Each flow card is given a name and a list of typed parameters. This is similar to a template with parameters. In the above figure we can see the Send flow card which has five parameters. The parameters are used in the specification.
2. Contract Wallet
This is a key element of the flow card. Every box has a guarding script. Often it is the script that checks a signature against a public key. This script is trivial in ErgoScript and is defined like the def pk(pubkey: Address) = { pubkey } template where pubkey is a parameter of the type Address . In the figure, the script template is applied to the parameter pk(sender) and thus a concrete wallet contract is obtained. Therefore pk(sender) and pk(receiver) yield different scripts and represent different wallets on the diagram, even though they use the same template.
Contract Wallet contains a set of all UTXO boxes which have a given script derived from the given script template using flow card parameters. For example, in the figure, the template is pk and parameter pubkey is substituted with the `sender’ flow card parameter.
3. Contract
Even though a contract is a property of a box, on the diagram we group the boxes by their contracts, therefore it looks like the boxes belong to the contracts, rather than the contracts belong to the boxes. In the example, we have three instantiated contracts pk(sender) , pk(receiver) and minerFee . Note, that pk(sender) is the instantiation of the pk template with the concrete parameter sender and minerFee is the instantiation of the pre-defined contract which protects the miner reward boxes.
4. Box name
In the diagram we can give each box a name. Besides readability of the diagram, we also use the name as a synonym of a more complex indexed access to the box in the contract. For example, change is the name of the box, which can also be used in the ErgoScript conditions instead of OUTPUTS(2) . We also use box names to associate spending conditions with the boxes.
5. Boxes in the wallet
In the diagram, we show boxes (darker rectangles) as belonging to the contract wallets (lighter rectangles). Each such box rectangle is connected with a grey transaction rectangle by either orange or green arrows or both. An output box (with an incoming green arrow) may include many lines of text where each line specifies a condition which should be checked as part of the transaction. The first line specifies the condition on the amount of ERG which should be placed in the box. Other lines may take one of the following forms:
  1. amount: TOKEN - the box should contain the given amount of the given TOKEN
  2. R == value - the box should contain the given value of the given register R
  3. boxName ? condition - the box named boxName should check condition in its script.
We discuss these conditions in the sections below.
6. Amount of ERGs in the box
Each box should store a minimum amount of ERGs. This is checked when the creating transaction is validated. In the diagram the amount of ERGs is always shown as the first line (e.g. B: ERG or B - minErg - txFee ). The value type ascription B: ERG is optional and may be used for readability. When the value is given as a formula, then this formula should be respected by the transaction which creates the box.
It is important to understand that variables like amount and txFee are not named properties of the boxes. They are parameters of the whole diagram and representing some amounts. Or put it another way, they are shared parameters between transactions (e.g. Sell Order and Swap transactions from DEX example below share the tAmt parameter). So the same name is tied to the same value throughout the diagram (this is where the tooling would help a lot). However, when it comes to on-chain validation of those values, only explicit conditions which are marked with ? are transformed to ErgoScript. At the same time, all other conditions are ensured off-chain during transaction building (for example in an application using Appkit API) and transaction validation when it is added to the blockchain.
7. Amount of T token
A box can store values of many tokens. The tokens on the diagram are named and a value variable may be associated with the token T using value: T expression. The value may be given by formula. If the formula is prefixed with a box name like boxName ? formula , then it is should also be checked in the guarding script of the boxName box. This additional specification is very convenient because 1) it allows to validate the visual design automatically, and 2) the conditions specified in the boxes of a diagram are enough to synthesize the necessary guarding scripts. (more about this below at “From Diagrams To ErgoScript Contracts”)
8. Tx Inputs
Inputs are connected to the corresponding transaction by orange arrows. An input arrow may have a label of the following forms:
  1. [email protected] - optional name with an index i.e. [email protected] or u/2 . This is a property of the target endpoint of the arrow. The name is used in conditions of related boxes and the index is the position of the corresponding box in the INPUTS collection of the transaction.
  2. !action - is a property of the source of the arrow and gives a name for an alternative spending path of the box (we will see this in DEX example)
Because of alternative spending paths, a box may have many outgoing orange arrows, in which case they should be labeled with different actions.
9. Transaction
A transaction spends input boxes and creates output boxes. The input boxes are given by the orange arrows and the labels are expected to put inputs at the right indexes in INPUTS collection. The output boxes are given by the green arrows. Each transaction should preserve a strict balance of ERG values (sum of inputs == sum of outputs) and for each token the sum of inputs >= the sum of outputs. The design diagram requires an explicit specification of the ERG and token values for all of the output boxes to avoid implicit errors and ensure better readability.
10. Tx Outputs
Outputs are connected to the corresponding transaction by green arrows. An output arrow may have a label of the following [email protected] , where an optional name is accompanied with an index i.e. [email protected] or u/2 . This is a property of the source endpoint of the arrow. The name is used in conditions of the related boxes and the index is the position of the corresponding box in the OUTPUTS collection of the transaction.

Example: Decentralized Exchange (DEX)

Now let's use the above described notation to design a FlowCard for a DEX dApp. It is simple enough yet also illustrates all of the key features of FlowCard diagrams which we've introduced in the previous section.
The dApp scenario is shown in the figure below: There are three participants (buyer, seller and DEX) of the DEX dApp and five different transaction types, which are created by participants. The buyer wants to swap ergAmt of ERGs for tAmt of TID tokens (or vice versa, the seller wants to sell TID tokens for ERGs, who sends the order first doesn't matter). Both the buyer and the seller can cancel their orders any time. The DEX off-chain matching service can find matching orders and create the Swap transaction to complete the exchange.
The following diagram fully (and formally) specifies all of the five transactions that must be created off-chain by the DEX dApp. It also specifies all of the spending conditions that should be verified on-chain.

https://preview.redd.it/piogz0v9ssv41.png?width=1614&format=png&auto=webp&s=e1b503a635ad3d138ef91e2f0c3b726e78958646
Let's discuss the FlowCard diagram and the logic of each transaction in details:
Buy Order Transaction
A buyer creates a Buy Order transaction. The transaction spends E amount of ERGs (which we will write E: ERG ) from one or more boxes in the pk(buyer) wallet. The transaction creates a bid box with ergAmt: ERG protected by the buyOrder script. The buyOrder script is synthesized from the specification (see below at “From Diagrams To ErgoScript Contracts”) either manually or automatically by a tool. Even though we don't need to define the buyOrder script explicitly during designing, at run time the bid box should contain the buyOrder script as the guarding proposition (which checks the box spending conditions), otherwise the conditions specified in the diagram will not be checked.
The change box is created to make the input and output sums of the transaction balanced. The transaction fee box is omitted because it can be added automatically by the tools. In practice, however, the designer can add the fee box explicitly to the a diagram. It covers the cases of more complex transactions (like Swap) where there are many ways to pay the transaction fee.
Cancel Buy, Cancel Sell Transactions
At any time, the buyer can cancel the order by sending CancelBuy transaction. The transaction should satisfy the guarding buyOrder contract which protects the bid box. As you can see on the diagram, both the Cancel and the Swap transactions can spend the bid box. When a box has spending alternatives (or spending paths) then each alternative is identified by a unique name prefixed with ! (!cancel and !swap for the bid box). Each alternative path has specific spending conditions. In our example, when the Cancel Buy transaction spends the bid box the ?buyer condition should be satisfied, which we read as “the signature for the buyer address should be presented in the transaction”. Therefore, only buyer can cancel the buy order. This “signature” condition is only required for the !cancel alternative spending path and not required for !swap .
Sell Order Transaction
The Sell Order transaction is similar to the BuyOrder in that it deals with tokens in addition to ERGs. The transaction spends E: ERG and T: TID tokens from seller's wallet (specified as pk(seller) contract). The two outputs are ask and change . The change is a standard box to balance transaction. The ask box keeps tAmt: TID tokens for the exchange and minErg: ERG - the minimum amount of ERGs required in every box.
Swap Transaction
This is a key transaction in the DEX dApp scenario. The transaction has several spending conditions on the input boxes and those conditions are included in the buyOrder and sellOrder scripts (which are verified when the transaction is added to the blockchain). However, on the diagram those conditions are not specified in the bid and ask boxes, they are instead defined in the output boxes of the transaction.
This is a convention for improved usability because most of the conditions relate to the properties of the output boxes. We could specify those properties in the bid box, but then we would have to use more complex expressions.
Let's consider the output created by the arrow labeled with [email protected] . This label tells us that the output is at the index 0 in the OUTPUTS collection of the transaction and that in the diagram we can refer to this box by the buyerOut name. Thus we can label both the box itself and the arrow to give the box a name.
The conditions shown in the buyerOut box have the form bid ? condition , which means they should be verified on-chain in order to spend the bid box. The conditions have the following meaning:
  • tAmt: TID requires the box to have tAmt amount of TID token
  • R4 == bid.id requires R4 register in the box to be equal to id of the bid box.
  • script == buyer requires the buyerOut box to have the script of the wallet where it is located on the diagram, i.e. pk(buyer)
Similar properties are added to the sellerOut box, which is specified to be at index 1 and the name is given to it using the label on the box itself, rather than on the arrow.
The Swap transaction spends two boxes bid and ask using the !swap spending path on both, however unlike !cancel the conditions on the path are not specified. This is where the bid ? and ask ? prefixes come into play. They are used so that the conditions listed in the buyerOut and sellerOut boxes are moved to the !swap spending path of the bid and ask boxes correspondingly.
If you look at the conditions of the output boxes, you will see that they exactly specify the swap of values between seller's and buyer's wallets. The buyer gets the necessary amount of TID token and seller gets the corresponding amount of ERGs. The Swap transaction is created when there are two matching boxes with buyOrder and sellOrder contracts.

From Diagrams To ErgoScript Contracts

What is interesting about FlowCard specifications is that we can use them to automatically generate the necessary ErgoTree scripts. With the appropriate tooling support this can be done automatically, but with the lack of thereof, it can be done manually. Thus, the FlowCard allows us to capture and visually represent all of the design choices and semantic details of an Ergo dApp.
What we are going to do next is to mechanically create the buyOrder contract from the information given in the DEX flow card.
Recall that each script is a proposition (boolean valued expression) which should evaluate to true to allow spending of the box. When we have many conditions to be met at the same time we can combine them in a logical formula using the AND binary operation, and if we have alternatives (not necessarily exclusive) we can put them into the OR operation.
The buyOrder box has the alternative spending paths !cancel and !swap . Thus the ErgoScript code should have OR operation with two arguments - one for each spending path.
/** buyOrder contract */ { val cancelCondition = {} val swapCondition = {} cancelCondition || swapCondition } 
The formula for the cancelCondition expression is given in the !cancel spending path of the buyOrder box. We can directly include it in the script.
/** buyOrder contract */ { val cancelCondition = { buyer } val swapCondition = {} cancelCondition || swapCondition } 
For the !swap spending path of the buyOrder box the conditions are specified in the buyerOut output box of the Swap transaction. If we simply include them in the swapCondition then we get a syntactically incorrect script.
/** buyOrder contract */ { val cancelCondition = { buyer } val swapCondition = { tAmt: TID && R4 == bid.id && @contract } cancelCondition || swapCondition } 
We can however translate the conditions from the diagram syntax to ErgoScript expressions using the following simple rules
  1. [email protected] ==> val buyerOut = OUTPUTS(0)
  2. tAmt: TID ==> tid._2 == tAmt where tid = buyerOut.tokens(TID)
  3. R4 == bid.id ==> R4 == SELF.id where R4 = buyerOut.R4[Coll[Byte]].get
  4. script == buyer ==> buyerOut.propositionBytes == buyer.propBytes
Note, in the diagram TID represents a token id, but ErgoScript doesn't have access to the tokens by the ids so we cannot write tokens.getByKey(TID) . For this reason, when the diagram is translated into ErgoScript, TID becomes a named constant of the index in tokens collection of the box. The concrete value of the constant is assigned when the BuyOrder transaction with the buyOrder box is created. The correspondence and consistency between the actual tokenId, the TID constant and the actual tokens of the buyerOut box is ensured by the off-chain application code, which is completely possible since all of the transactions are created by the application using FlowCard as a guiding specification. This may sound too complicated, but this is part of the translation from diagram specification to actual executable application code, most of which can be automated.
After the transformation we can obtain a correct script which checks all the required preconditions for spending the buyOrder box.
/** buyOrder contract */ def DEX(buyer: Addrss, seller: Address, TID: Int, ergAmt: Long, tAmt: Long) { val cancelCondition: SigmaProp = { buyer } // verify buyer's sig (ProveDlog) val swapCondition = OUTPUTS.size > 0 && { // securing OUTPUTS access val buyerOut = OUTPUTS(0) // from [email protected] buyerOut.tokens.size > TID && { // securing tokens access val tid = buyerOut.tokens(TID) val regR4 = buyerOut.R4[Coll[Byte]] regR4.isDefined && { // securing R4 access val R4 = regR4.get tid._2 == tAmt && // from tAmt: TID R4 == SELF.id && // from R4 == bid.id buyerOut.propositionBytes == buyer.propBytes // from script == buyer } } } cancelCondition || swapCondition } 
A similar script for the sellOrder box can be obtained using the same translation rules. With the help of the tooling the code of contracts can be mechanically generated from the diagram specification.

Conclusions

Declarative programming models have already won the battle against imperative programming in many application domains like Big Data, Stream Processing, Deep Learning, Databases, etc. Ergo is pioneering the declarative model of dApp development as a better and safer alternative to the now popular imperative model of smart contracts.
The concept of FlowCard shifts the focus from writing ErgoScript contracts to the overall flow of values (hence the name), in such a way, that ErgoScript can always be generated from them. You will never need to look at the ErgoScript code once the tooling is in place.
Here are the possible next steps for future work:
  1. Storage format for FlowCard Spec and the corresponding EIP standardized file format (Json/XML/Protobuf). This will allow various tools (Diagram Editor, Runtime, dApps etc) to create and use *.flowcard files.
  2. FlowCard Viewer, which can generate the diagrams from *.flowcard files.
  3. FlowCard Runtime, which can run *.flowcard files, create and send transactions to Ergo network.
  4. FlowCard Designer Tool, which can simplify development of complex diagrams . This will make designing and validation of Ergo contracts a pleasant experience, more like drawing rather than coding. In addition, the correctness of the whole dApp scenario can be verified and controlled by the tooling.
submitted by eleanorcwhite to btc [link] [comments]

Block Format Letter How (and why) to write a business letter FREE BITCOIN CRYPTOTAB HACK SCRIPT 14 BTC Modified Block Letter with Enclosure, Copy, and Envelope How To Format a Cover Letter (Standard Block Format)

Bitcoin is an online currency with a security system run by a massive network of total strangers. Trusting strangers with your digital information may sound silly, but it’s actually a revolution But I was wrong. A real Bitcoin block contains so many transactions than a block in testnet. So after running the Ruby script for two weeks, I managed to convert 14,852,781 transactions to SQL until 22/04/2013. Long way to go & number of transactions in a Block is keep increasing. Right now a Block contains at least 1000 transactions. A BIP is a "Bitcoin improvement proposal" or the format for making changes to Bitcoin. Similar to the relationship between a private and public key, the private key sequence that results from using an HD wallet is defined by a one-way relationship between inputs and outputs of an algorithm. Bitcoin Scamming Format to Use on Client. Having seen the requirements for this any Bitcoin scamming format, here is the main thing and how to convince someone to invest in Bitcoin and scam them. Ransomware Scam Format. The first Bitcoin billing format is the use of ransomware to attack clients. Bitcoin uses: SHA256(SHA256(Block_Header)) but you have to be careful about byte-order. For example, this python code will calculate the hash of the block with the smallest hash as of June 2011, Block 125552. The header is built from the six fields described above, concatenated together as little-endian values in hex notation:

[index] [4993] [7014] [141] [8640] [9475] [12022] [201] [7105] [1879] [2349]

Block Format Letter

In this presentation, I discuss the block letter style and the variations of the block letter style (i.e. modified block, semi-block, and simplified). This is not my final version, but I plan to ... Free bitcoin giveaways. ... Write your comment below with your wallet address and proof of doing step 2 ... As for an example,i was able to find one blockchain block what was decryped in 2 minutes ... Here is how to properly format a block letter. How To Do BLOCK Lettering – A Step-By-Step Hand-Lettering Tutorial for Beginners - Duration: 21:12. The Happy Ever Crafter Recommended for you How to format a modified block-style letter in Microsoft Word 2007 and 2010. This includes enclosure notations, copy notations, and attaching an envelope. Project for CIMT 543, submission 2. How To Do BLOCK Lettering – A Step-By-Step Hand-Lettering Tutorial for Beginners - Duration: 21:12. The Happy Ever Crafter Recommended for you