Transactions — Bitcoin

[OWL WATCH] Waiting for "IOTA TIME" 14;

Disclaimer: This is my editing, so there could be some errors, misunderstandings or exaggerations.
Waiting for "IOTA TIME " (an era where IOTA defines nearly everything in terms of the block-chain world)

niels12어제 오후 4:51
IOTA funds are public: https://thetangle.org/address/IDNAFP9FWWKYGNDMKGJWZD9GATGRPTJYTYHLKFNDEQSISPSETLZQOSPGOHC99LMPXDEHSH9XYHNVOLUBBQPCEGHYK9 But they have probably other sources of income, like funding by government etc. And maybe also other IOTA funds on other addresses. I don't know.
Balance: 59.68 Ti


David Sønstebø어제 오후 9:41
I wonder how many times an out of context 2 year old private DM has to be addressed. At the time IOTA was approaching stagnation due to the actions of primarily CFB**, thus since we both started Jinn together which lead to IOTA,** I tried repeatedly to talk sense into him. I.E. "If you are going to torpedo all progress, let's just sell it all and start from scratch, fuck it" It's a figure of speech, while trying to talk sense into someone who insists that 1 + 1 = 3.59 My tax records show when I last sold iotas. February of 2018. Now stop reading into private DMs, especially ones taken out of context and especially those leaked by someone who's proclaimed he is going to ruin IOTA and my life. You need to go back to school if you think there is anything to 'speculate' on there.


dom어제 오후 4:15
u/unsy we will release the condensed version of them once we want to. Just because you so desperately desire them for whatever reason doesn't make us do it faster. Being in this space for so fucking long, last thing I want is to attempt to act in good faith again and then be screwed over by those trying to misconstrue reality and spread lies. We've been at that for too long. Once they are fully ready, and we have them in a format we like, we will publish them.


dom어제 오후 4:16
Our objective of the finance / legal department is to become one of the most trustworthy / transparent organizations in this space. Which is why we're setting up new and stricter policies in general


dom어제 오후 4:18
quite frankly, with everything that has happened up until now, I would certainly say that we are one of the most transparent organization (if we wanted it or not) u/unsy


dom어제 오후 4:21
u/unsy I am not worried about it. If we have problems, we always solve them - I think we've proven that by now. And as it stands right now with our current funding + our strategy, we are in good hands


David Sønstebø오늘 오전 6:41
Don't worry, a shitty FUD piece in a cryptoblog is nada
[오전 6:41]
We were once numero uno target by Jeffrey Epstein funded Joi Ito's MIT DCI
[오전 6:41]
This is nothing


------------------------------------------------------------------------------------

Antonio Nardella [IF]어제 오후 11:13
IMO the community has matured a lot, we have community and certified developers working with the IF in the X-Teams, there are new people coming in with direct interest in the tech (yeah, also spec is still popular) and from the chats that I've had, there are devs waiting for the breaking changes of Chrysalis P2, before starting to develop again.. But that's my assessment..


Jelle Millenaar [IF]어제 오후 9:15
Well, I can say the DID developments are going smooth. Starting publishing the first DIDs to the Tangle ;D


Jelle Millenaar [IF]어제 오후 9:15
And since I am totally not biased towards Identity, but its gonna be revolutionary ;D


Jelle Millenaar [IF]어제 오후 10:06
This is the perfect time to loose faith in the IOTA Foundations capability to deliver, especially after the network just received a major update with many improvements. Its just crypto being crypto,


dom오늘 오전 2:12
Yeh we'll go through it. This is the usual game...


Dominik Schiener
There is more tech maturity, more adoption and more progress than ever. We are one of the only projects which gets funding from government grants and corporations. Stop the attention grabbing headlines and get your sources right.


Long field
You can track their iota address, and I can tell they didn't sell any iota tokens in last two months


HusQy
IOTA is like a large decentralized network cable that connects any number of nodes with each other and that enables data and values ​​to be exchanged with one another, whereby the data is protected against manipulation and the value transactions against double spends. Thereon ...

... you can run any decentralized application (we call this layer) - e.g. a blockchain that stores certain data for as long as you want and limits the amount of data to be saved via fees like Bitcoin. Each of these uses inherit ...

... your security from the basic protocol and can specifically only save the data that is relevant for you (also decentralized). To say that IOTA is not a DLT is in principle not that wrong - it is a platform for DLTs and therefore much more powerful than all ...

... existing DLTs because it is much more flexible. For example, you can run Hashgraph in IOTA, or Bitcoin or whatever. And IOTA is the token that connects the entire ecosystem. This is of course "not yet" the case, but Chrysalis Part 2 is the first step.​


HusQy
@blocktrainerperhaps this explanation will enable you to understand where the journey is going. If a decentralized data storage is required, then you can build it with IOTA and it then has exactly the same properties in terms of permanent storage as Bitcoin.


Block trainer
We can also get a little more technical. The way you describe it, it sounds like an interoperability layer ... something like that here, which then equates to a polkadot etc.
📷

HusQy
In principle yes, only that it doesn't connect Bitcoin and ETH but "IOTA Smart Contracts" with "IOTA Storage" etc. It is not there to connect other projects but to offer the same as other projects, only faster and cheaper.

-------------------------------------------------------------------------------

Bitcoin Coach
And in 5 years there will be a completely new project, which then claims to be better than IOTA. And then should all the infrastructure be thrown overboard and the partners simply change the DLT?


HusQy
This is how technology works. It makes no sense to run the Internet on the basis of 64k modems just because many people have one at home. The change does not take place overnight but creeping and if you look at the BTC Dominance you can see that too.

Ultimately, everything will switch to the best technology and we'll see which that is :)


Block trainer
The "best" must also be defined. What are the classes to master?


HusQy
All classes. If there is a technology that can represent even one aspect better, then it is not yet good enough. Blockchain, for example, is a "degenerate" DAG with only one reference. The goal is that IOTA can also use blockchains if the use case requires it.


HusQy
The future is not "either DAG or blockchain" but both seamlessly linked within the same ecosystem. IOTA smart contracts use a blockchain, for example, but a separate chain for each smart contract and the blockchain is within the tangle.

Block trainer
According to the new definition, they are no longer saved ... A doublespent could change the reference retrospectively.


HusQy
That's not quite true. The tangle itself contains all information for all eternity and you cannot remove any information. Once the data has reached a certain age, it is no longer stored by every node in the network. But you can still ...

... still prove what happened in the part of the tangle that was "forgotten" by the nodes after a certain time. Now there are two ways to keep this evidence: 1. You save the evidence personally and can present it at any time. 2. Man ...​​

... writes a plug-in for the node, which monitors the Tangle for information of a certain type and keeps a copy of all car purchase-related data forever (or for at least 30 years, for example). All dealerships could then install this plugin and ...

... jointly store this data decentrally in order to query the information if necessary. However, you would only selectively save the data that interests you. The evidence they produce can still be verified by any node on the network.​​

If the server of a car dealership fails, it can download the data again from one of the other dealerships. Quasi like an application-related private blockchain which is secured by the Tangle. It is also conceivable that there are service providers for this ...

----------------------------------------------------------------------------------


HusQy
Data is only kept immutable. How do you intend to execute a token transaction over pure data? I'm simply sending the following two data transactions at the same time: 1. I'm sending $ 100 from address A to address B. 2. I'm sending $ 100 from address A to address C.


HusQy
In order to determine which transaction is successful / came first, you need consensus. Data transactions do not allow token transfer.


Block trainer
Why doesn't that allow token transfer? I can simply use it to sign my values. The question is about the meaning of the token. I can also sign that I have transferred € 10 for the petrol station. Or I transmit the proof via curled BTC ...


HusQy
Did I just describe you can publish two conflicting data transactions and no one knows which is the correct one: P


Block trainer
Unless you agree on a consensus. Time stamp + BTC (locked) in hash = value transmitted ... What else is the IOTA token for?


HusQy
Whether information is correct can only be seen in the context. Take a look at the difference between "data" and "information". For example, you can claim that you locked Bitcoin even though it didn't.


Block trainer
I may need a proof of this. See how, for example, BTC is unlocked in liquid or in the LN. The IOTA data layer is extremely similar to the principle of Lightning. Accordingly, the sending of tokens would be possible here, which means that I see the use case of the IOTA coin at risk


HusQy
Such a proof is impossible. The reason why this works with LN nodes is because LN nodes are Bitcoin nodes that know what is happening in the Bitcoin network and have "information" and not just "data": P What you are describing is technically impossible.


Block trainer
Data = information What can the LN not, what IOTA can sometimes?


HusQy
That's not rubbish. There is a huge difference between data and information, and inter-chain transactions are not possible because of that very difference. LN won't work - there are too many game theory problems: P​

--------------------------------------------------------------------------------------------

Dominik Schiener
There is more tech maturity, more adoption and more progress than ever. We are one of the only projects which gets funding from government grants and corporations. Stop the attention grabbing headlines and get your sources right.


Dominik Schiener
As an innovation leader in Europe, I certainly say we deserve to get grants. There is a below 7% success chance usually. And yes, everything is fully audited (by externals ofc), showing clearly how and that the money was used in achieving the milestones of the grant.

----------------------------------------------------------------------------------------------------------------------------------
submitted by btlkhs to Iota [link] [comments]

Coinbase Support Number ♜ 1-812-785-1006 ♞ Cash App Customer Care Phone Number USA CANADA ##2020## UYCTRFG


Coinbase Support Number ♜ 1-812-785-1006 ♞ Cash App Customer Care Phone Number USA CANADA ##2020## UYCTRFG

Coinbase Support Number ♜ 1-812-785-1006 ♞ Cash App Customer Care Phone Number USA CANADA ##2020## UYCTRFG

Coinbase Wallet Coinbase billing mail helpline has been phone launched for care fulfilling customer requirement service of checking the mails through any device. It has made easy for the users to access the account from even a simple computer. With this mail account you can simply “Sign-In” in your account by putting the email address and the password. Once you “Sign In” you can check the activity of your mail account. You can compose, read the incoming mail and also download the large file attachments.

Majority of people has been registered with Coinbase premium email account because it is completely different from other mail accounts with number of favorable qualities available in it. It is currently considered as one of the leading webmail application that has got the remarkable reputation among the users and it’s effectual Cash App Refund email customer support is always available for those users who generally face issues while handling accounts. To update them the customer carenical team attends sessions which over different parts require for the effective support. {1-812-785-1006-}

Why Contact Coinbase 24/7 Support Number: {1-812-785-1006-}Being a part of Yahoo and AT&T services it offers a easy handling mailing option but there are also many customer carenical glitches occurs with users that you may face as well. For these issues you can contact customer carenical support to get help and you can find plenty of them in the internet. Customer carenical support is available 24x7 so that you can contact them according to your convenience.

Coinbase Pro Email Account Troubleshooting sources:Coinbase Pro password not workingNew account sign up assistanceControlling spam, junk and phishing mailsConfigure mail account intovariousmailingservicesanddIssues in sending/receiving mail

Let’s have some discussion on the Coinbase premium mail issues solved by the team of Cash App Refund online phone support- {1-812-785-1006}
Coinbase Help {1-812-785-1006}
Payment methods for US customers | Coinbase Help {1-812-785-1006}
Contact us | Coinbase Help {1-812-785-1006}
Taxes, reports and financial services | Coinbase Help {1-812-785-1006}
Privacy and security | Coinbase Help {1-812-785-1006}
Other topics | Coinbase Help {1-812-785-1006}
Coinbase pricing and fees disclosures | Coinbase Help {1-812-785-1006}
Coinbase Commerce | Coinbase Help {1-812-785-1006}
Coinbase Wallet | Coinbase Help {1-812-785-1006}
Coinbase Help {1-812-785-1006}
ID document verification | Coinbase Help {1-812-785-1006}
Managing my account | Coinbase Help {1-812-785-1006}
Coinbase Custody Help
Coinbase Pro Help {1-812-785-1006}
Supported cryptocurrencies | Coinbase Help {1-812-785-1006}
Getting started | Coinbase Help {1-812-785-1006}
Coinbase Service during COVID-19 | Coinbase Help {1-812-785-1006}
Trading and funding | Coinbase Help {1-812-785-1006}
Avoiding cryptocurrency scams | Coinbase Help {1-812-785-1006}
Why will my password reset require 24 hours to process? | Coinbase Help {1-812-785-1006}
How do I locate my payment method verification amounts? | Coinbase Help {1-812-785-1006}
Is this email really from Coinbase? | Coinbase Help {1-812-785-1006}
Device confirmation troubleshooting | Coinbase Help {1-812-785-1006}
LocalBitcoins and Coinbase | Coinbase Help {1-812-785-1006}
What is Coinbase Pro? | Coinbase Pro Help {1-812-785-1006}
How do I gain access to a deceased family members Coinbase account? | Coinbase Help {1-812-785-1006}
How do I raise my limits? | Coinbase Help {1-812-785-1006}
I can't remember my password | Coinbase Help {1-812-785-1006}
I have lost or need to update my phone or 2-step verification device | Coinbase Help {1-812-785-1006}
Landlines and 2-step verification | Coinbase Help {1-812-785-1006}
How long do international deposits and withdrawals take? | Coinbase Help {1-812-785-1006}
Data Privacy at Coinbase | Coinbase Help {1-812-785-1006}
Why am I unable to upload my ID? | Coinbase Help {1-812-785-1006}
Privacy data request FAQ | Coinbase Help {1-812-785-1006}
Recurring Purchases | Coinbase Help {1-812-785-1006}
Purchasing up to your buy limit | Coinbase Help {1-812-785-1006}
Is Bitcoin secure? Has this network ever been hacked? | Coinbase Help {1-812-785-1006}
USD Coin rewards FAQ | Coinbase Help {1-812-785-1006}
Sending authenticated account requests for Coinbase Commerce | Coinbase Help {1-812-785-1006}
Bankruptcy trustee guide | Coinbase Help {1-812-785-1006}
How do I report an unauthorized transaction? | Coinbase Help {1-812-785-1006}
Creating an account | Coinbase Help {1-812-785-1006}
What are the fees on Coinbase Pro? | Coinbase Pro Help {1-812-785-1006}
What to expect during the planned Ethereum network upgrade (Constantinople)? | Coinbase Help {1-812-785-1006}
Behavior policy | Coinbase Help {1-812-785-1006}
Why can't I reset my password? | Coinbase Help {1-812-785-1006}
How can I delete a wallet address? | Coinbase Help {1-812-785-1006}
Why can't I see my transaction on the blockchain? | Coinbase Help {1-812-785-1006}
Frequently asked questions (FAQ) | Coinbase Pro Help {1-812-785-1006}
Why does Coinbase ask for my personal information when making certain transactions? | Coinbase Help {1-812-785-1006}
How to transfer funds between your Coinbase Pro and Coinbase accounts | Coinbase Pro Help {1-812-785-1006}
Coinbase accounts-Hawaii | Coinbase Help {1-812-785-1006}
Reporting phishing sites | Coinbase Help {1-812-785-1006}
Destination Tag/memo FAQ | Coinbase Help {1-812-785-1006}
Escheatment and unclaimed funds | Coinbase Help {1-812-785-1006}
Dash (DASH) FAQ | Coinbase Help {1-812-785-1006}
Ethereum Hard Fork | Coinbase Help {1-812-785-1006}
Security key restrictions | Coinbase Help {1-812-785-1006}
Does Coinbase support smart contracts? | Coinbase Help {1-812-785-1006}
Why does a negative balance occur? | Coinbase Help {1-812-785-1006}
When will my digital currency purchase or local currency deposit arrive? | Coinbase Help {1-812-785-1006}
Brexit FAQ | Coinbase Help {1-812-785-1006}
Bitcoin Cash FAQ | Coinbase Help {1-812-785-1006}
What is Bitcoin Cash? | Coinbase Help {1-812-785-1006}
How do I use my local currency wallet (USD EUR GBP)? | Coinbase Help {1-812-785-1006}
IRS notification | Coinbase Help {1-812-785-1006}
How do I get a crypto address? | Coinbase Help {1-812-785-1006}
EU verification levels FAQ | Coinbase Help {1-812-785-1006}
Supported cryptocurrencies | Coinbase Help {1-812-785-1006}
How can I disclose a security vulnerability to Coinbase? | Coinbase Help {1-812-785-1006}
Convert cryptocurrency FAQ | Coinbase Help {1-812-785-1006}
Restoring 2-step verification from a secret seed | Coinbase Help {1-812-785-1006}
Payment methods for Singapore customers | Coinbase Help {1-812-785-1006}
Basic Attention Token FAQ | Coinbase Help {1-812-785-1006}
Why does the Coinbase mobile app request special permissions? | Coinbase Help {1-812-785-1006}
Coinbase Help {1-812-785-1006}
Can I lose access to my Wallet funds? | Coinbase Help {1-812-785-1006}
How do I sell or "cash out" my digital currency? | Coinbase Help {1-812-785-1006}
Why is my vault withdrawal pending? | Coinbase Help {1-812-785-1006}
Why does a buy take so long? | Coinbase Help {1-812-785-1006}
USD Coin rewards FAQ | Coinbase Help {1-812-785-1006}
Does Coinbase use customer deposits for anything? | Coinbase Help {1-812-785-1006}
How to enable a webcam | Coinbase Help {1-812-785-1006}
When will I receive my cryptocurrency from my card purchase? | Coinbase Help {1-812-785-1006}
2-step verification FAQ | Coinbase Help {1-812-785-1006}
How do I buy cryptocurrency? | Coinbase Help {1-812-785-1006}
How do I add a payment method when using the mobile app? | Coinbase Help {1-812-785-1006}
Troubleshooting and Tips | Coinbase Help {1-812-785-1006}
Privacy and security | Coinbase Pro Help {1-812-785-1006}
Why does a sell take so long? | Coinbase Help {1-812-785-1006}
What is Ethereum Classic? | Coinbase Help {1-812-785-1006}
Payment methods for UK customers | Coinbase Help {1-812-785-1006}
SegWit FAQ | Coinbase Help {1-812-785-1006}
API FAQ | Coinbase Custody Help
Coinbase Card FAQ | Coinbase Help {1-812-785-1006}
Why is my transaction "pending"? | Coinbase Help {1-812-785-1006}
What is Coinbase Wallet? | Coinbase Help {1-812-785-1006}
USD Coin (USDC) FAQ | Coinbase Help {1-812-785-1006}
Getting started | Coinbase Custody Help
What types of crypto does Wallet support? | Coinbase Help {1-812-785-1006}
Price page information | Coinbase Help {1-812-785-1006}
Earn.com balance withdrawal | Coinbase Help {1-812-785-1006}
What is a Bitcoin wallet? | Coinbase Help {1-812-785-1006}
Compound (COMP) FAQ | Coinbase Help {1-812-785-1006}
Reset my password | Coinbase Help {1-812-785-1006}
CashAddr FAQ | Coinbase Help {1-812-785-1006}
XRP (XRP) FAQ | Coinbase Help {1-812-785-1006}
What is the minimum amount of cryptocurrency that I can purchase? | Coinbase Help {1-812-785-1006}
What two-step authentication apps can I use? | Coinbase Help {1-812-785-1006}
What is a DApp? | Coinbase Help {1-812-785-1006}
Where can I spend Bitcoin? | Coinbase Help {1-812-785-1006}
Password requirements | Coinbase Help {1-812-785-1006}
Can I cancel a cryptocurrency transaction? | Coinbase Help {1-812-785-1006}
What is the Bitcoin Blockchain? | Coinbase Help {1-812-785-1006}
Storing on Coinbase Custody | Coinbase Custody Help
Coinbase suspended states | Coinbase Help {1-812-785-1006}
How to access privacy settings and make requests | Coinbase Help {1-812-785-1006}
For customers | Coinbase Help {1-812-785-1006}
How do I change my email address? | Coinbase Help {1-812-785-1006}
Bitcoin SegWit2x Fork FAQ for merchants | Coinbase Help {1-812-785-1006}
What is Coinbase Pro? | Coinbase Help {1-812-785-1006}
Stellar Lumens (XLM) FAQ | Coinbase Help {1-812-785-1006}
Lost email access | Coinbase Help {1-812-785-1006}
Account recovery FAQ | Coinbase Help {1-812-785-1006}
Limits and account levels | Coinbase Help {1-812-785-1006}
Overview of order types and settings (stop, limit, market) | Coinbase Pro Help {1-812-785-1006}
Can I withdraw from my EUR wallet to my verified UK bank account? | Coinbase Help {1-812-785-1006}
Why is my cryptocurrency send delayed? | Coinbase Help {1-812-785-1006}
Refunds | Coinbase Help {1-812-785-1006}
Identity + photo verification | Coinbase Help {1-812-785-1006}
Cancelling a purchase | Coinbase Help {1-812-785-1006}
Why didn't I receive a verification email? | Coinbase Help {1-812-785-1006}
Kyber (KNC) 101 | Coinbase Help {1-812-785-1006}
Availability | Coinbase Custody Help
Authorized signatory and auditor list | Coinbase Custody Help
Managing my account | Coinbase Custody Help
Bitcoin glossary | Coinbase Help {1-812-785-1006}
How do I set up a vault? | Coinbase Help {1-812-785-1006}
Bitcoin Fork FAQ | Coinbase Help {1-812-785-1006}
Managing Google Authenticator | Coinbase Help {1-812-785-1006}
Signing up for a Coinbase Card | Coinbase Help {1-812-785-1006}
Bitcoin SV FAQ | Coinbase Help {1-812-785-1006}
Does Coinbase freeze accounts? | Coinbase Help {1-812-785-1006}
Payment methods for European customers | Coinbase Help {1-812-785-1006}
0x FAQ | Coinbase Help {1-812-785-1006}
What is Coinbase? | Coinbase Help {1-812-785-1006}
Available balance FAQ | Coinbase Help {1-812-785-1006}
How can I close my account? | Coinbase Help {1-812-785-1006}
Email Protection | Cloudflare
DAI FAQ | Coinbase Help {1-812-785-1006}
Upcoming assets | Coinbase Custody Help
Coinbase Money Transmission and e-Money Regulatory Compliance | Coinbase Help {1-812-785-1006}
How do I verify my identity when using the mobile app? | Coinbase Help {1-812-785-1006}
How can I update my legal name? | Coinbase Help {1-812-785-1006}
Why are my payment method verification amounts incorrect? | Coinbase Help {1-812-785-1006}
Why did my limits change? | Coinbase Help {1-812-785-1006}
How do I buy Ethereum? | Coinbase Help {1-812-785-1006}
Coinbase User Research | Coinbase Help {1-812-785-1006}
Aug 22- BTC delays FAQ | Coinbase Help {1-812-785-1006}
Other topics | Coinbase Pro Help {1-812-785-1006}
What is a transaction hash/hash ID? | Coinbase Help {1-812-785-1006}
Crypto to eGift cards | Coinbase Help {1-812-785-1006}
Can I open a Coinbase account if I'm under 18? | Coinbase Help {1-812-785-1006}
Getting started | Coinbase Pro Help {1-812-785-1006}
Instant Card Withdrawals | Coinbase Help {1-812-785-1006}
Using and managing security keys | Coinbase Help {1-812-785-1006}
Vaults FAQ | Coinbase Help {1-812-785-1006}
How to successfully verify a billing address | Coinbase Help {1-812-785-1006}
How do I set up 2-step verification? | Coinbase Help {1-812-785-1006}
How to withdraw funds from a closed account | Coinbase Help {1-812-785-1006}
How to send a complaint | Coinbase Help {1-812-785-1006}
Seed phrases | Coinbase Help {1-812-785-1006}
Summary of user agreement changes from January, 31 2019 update | Coinbase Help {1-812-785-1006}
How long does a purchase or deposit take to complete? | Coinbase Help {1-812-785-1006}
Using TurboTax or Cointracker to report on cryptocurrency | Coinbase Help {1-812-785-1006}
Coinbase Bundles FAQ | Coinbase Help {1-812-785-1006}
Account FAQ | Coinbase Help {1-812-785-1006}
Coinbase Tax Resource Center | Coinbase Help {1-812-785-1006}
Payment methods for Australian customers | Coinbase Help {1-812-785-1006}
Why are my card purchases timing out? | Coinbase Help {1-812-785-1006}
How do I buy cryptocurrency with a credit or debit card in Europe and the UK? | Coinbase Help {1-812-785-1006}
No verification link in email | Coinbase Help {1-812-785-1006}
How is Coinbase insured? | Coinbase Help {1-812-785-1006}
Using a bank account as a payment method for US customers | Coinbase Help {1-812-785-1006}
Staking on Coinbase | Coinbase Help {1-812-785-1006}
What happens if I use the wrong Wallet address to send or receive crypto? | Coinbase Help {1-812-785-1006}
What is Coinbase card? | Coinbase Help {1-812-785-1006}
What mobile devices does Coinbase support? | Coinbase Help {1-812-785-1006}
How do I send and receive crypto through Wallet? | Coinbase Help {1-812-785-1006}
How do I return a cryptocurrency transaction? | Coinbase Help {1-812-785-1006}
Payment methods for Canadian customers | Coinbase Help {1-812-785-1006}
Why did I receive an unexpected device confirmation email? | Coinbase Help {1-812-785-1006}
Why do I see cryptocurrencies that arent supported by Coinbase? | Coinbase Help {1-812-785-1006}
Taxes, reports and financial services | Coinbase Pro Help {1-812-785-1006}
The Newcastle merchant survey | Coinbase Help {1-812-785-1006}
International support | Coinbase Help {1-812-785-1006}
Using Destination Tags on Coinbase | Coinbase Help {1-812-785-1006}
Custody fees | Coinbase Custody Help
Cosmos (ATOM) FAQ | Coinbase Help {1-812-785-1006}
How does USAA's Coinbase integration work? | Coinbase Help {1-812-785-1006}
Managing my account | Coinbase Pro Help {1-812-785-1006}
Money left my bank account where is my digital currency? | Coinbase Help {1-812-785-1006}
For merchants | Coinbase Help {1-812-785-1006}
OmiseGo (OMG) FAQ | Coinbase Help {1-812-785-1006}
Why did my wallet address change? | Coinbase Help {1-812-785-1006}
When do my limits replenish? | Coinbase Help {1-812-785-1006}
Coinbase Earn FAQ and terms | Coinbase Help {1-812-785-1006}
Can I use my Coinbase account to purchase cryptocurrency for resale? | Coinbase Help {1-812-785-1006}
Trading and funding | Coinbase Pro Help {1-812-785-1006}
The Coinbase referral program | Coinbase Help {1-812-785-1006}
EOS (EOS) FAQ | Coinbase Help {1-812-785-1006}
What countries and US states are supported for Coinbase and the USD wallet? | Coinbase Help {1-812-785-1006}
E-money license | Coinbase Help {1-812-785-1006}
Withdrawals | Coinbase Help {1-812-785-1006}
Orchid FAQ | Coinbase Help {1-812-785-1006}
How can I make my account more secure? | Coinbase Help {1-812-785-1006}
How can I contact Coinbase support? | Coinbase Help {1-812-785-1006}
What type of photo ID can I provide? | Coinbase Help {1-812-785-1006}
Troubleshooting UK bank account deposits and withdrawals | Coinbase Help {1-812-785-1006}
How does Coinbase use my ID? | Coinbase Help {1-812-785-1006}
How is my bank account information protected? | Coinbase Help {1-812-785-1006}
Who do I contact for a subpoena request or dispute or to send a legal document? | Coinbase Help {1-812-785-1006}
Why are buys and deposits disabled on my account? | Coinbase Help {1-812-785-1006}
Why is Coinbase requesting my country ID? | Coinbase Help {1-812-785-1006}
Algorand (ALGO) FAQ | Coinbase Help {1-812-785-1006}
What is Bitcoin? | Coinbase Help {1-812-785-1006}
Portfolio | Coinbase Help {1-812-785-1006}
What are price alerts? | Coinbase Help {1-812-785-1006}
Identity Verification FAQ | Coinbase Help {1-812-785-1006}
Bitcoin Gold FAQ | Coinbase Help {1-812-785-1006}
How to send and receive cryptocurrency | Coinbase Help {1-812-785-1006}
Can I create a Coinbase account in the name of a trust? | Coinbase Help {1-812-785-1006}
Altcoins and ICOs | Coinbase Help {1-812-785-1006}
Locations and trading pairs | Coinbase Pro Help {1-812-785-1006}
What are miner fees and does Coinbase pay them? | Coinbase Help {1-812-785-1006}
ETH Byzantium Fork FAQ | Coinbase Help {1-812-785-1006}
Prohibited regions | Coinbase Help {1-812-785-1006}
Asset trading and transfers | Coinbase Custody Help
Top up a crypto send | Coinbase Help {1-812-785-1006}
Zcash (ZEC) FAQ | Coinbase Help {1-812-785-1006}
Other topics | Coinbase Custody Help
Paypal FAQ | Coinbase Help {1-812-785-1006}
Tezos (XTZ) FAQ | Coinbase Help {1-812-785-1006}
What’s the difference between Coinbase.com and Wallet? | Coinbase Help {1-812-785-1006}
How do I change my country or state? | Coinbase Help {1-812-785-1006}
eCommerce integrations | Coinbase Help {1-812-785-1006}
I sent funds to the wrong address. How do I get them back? | Coinbase Help {1-812-785-1006}
Why aren't sells available in my country? | Coinbase Help {1-812-785-1006}
Security keys FAQ | Coinbase Help {1-812-785-1006}
Why do I have to provide extra information when I send money? | Coinbase Help {1-812-785-1006}
Ethereum Classic (ETC) FAQ | Coinbase Help {1-812-785-1006}
I've installed a smartphone 2-factor app. How do I stop receiving SMS codes? | Coinbase Help {1-812-785-1006}
What is phishing? | Coinbase Help {1-812-785-1006}
Where is my Coinbase crypto address? | Coinbase Help {1-812-785-1006}
Is Coinbase present on social media? | Coinbase Help {1-812-785-1006}
How long does a sell or withdrawal take to complete? | Coinbase Help {1-812-785-1006}
Is a wallet address safe to display publicly? | Coinbase Help {1-812-785-1006}
I see the error "account temporarily disabled." What should I do? | Coinbase Help {1-812-785-1006}
What countries are buys and sells available in? | Coinbase Help {1-812-785-1006}
Invest responsibly: recommended account management practices | Coinbase Help {1-812-785-1006}
What is Litecoin? | Coinbase Help {1-812-785-1006}
How do I make a purchase using a 3D secure card on the mobile app? | Coinbase Help {1-812-785-1006}
What is ERC20? | Coinbase Help {1-812-785-1006}
How do I move assets between my Wallet and my Coinbase.com account? | Coinbase Help {1-812-785-1006}
Payments | Coinbase Help {1-812-785-1006}
Coinbase update on November 2018 BCH Hard Fork | Coinbase Help {1-812-785-1006}
What is Ethereum? | Coinbase Help {1-812-785-1006}
Why did Coinbase cancel my order? | Coinbase Help {1-812-785-1006}
Troubleshooting SEPA deposits and withdrawals | Coinbase Help {1-812-785-1006}
Why isn't my authy device recognized? | Coinbase Help {1-812-785-1006}
Trading rules | Coinbase Pro Help {1-812-785-1006}
Market summary | Coinbase Pro Help {1-812-785-1006}
OmiseGo (OMG) FAQ | Coinbase Pro Help {1-812-785-1006}
What is Bitcoin Cash? | Coinbase Pro Help {1-812-785-1006}
What is ERC20? | Coinbase Pro Help {1-812-785-1006}
What is Ethereum? | Coinbase Pro Help {1-812-785-1006}
Who at Coinbase can see my open orders? | Coinbase Pro Help {1-812-785-1006}
Email address verification | Coinbase Pro Help {1-812-785-1006}
What is margin trading? | Coinbase Pro Help {1-812-785-1006}
Does Coinbase use customer deposits for anything? | Coinbase Pro Help {1-812-785-1006}
What mobile devices does Coinbase support? | Coinbase Help {1-812-785-1006}
How does whitelisting in the address book work? | Coinbase Pro Help {1-812-785-1006}
How do I change my email address? | Coinbase Pro Help {1-812-785-1006}
Why didn't I receive a verification email? | Coinbase Pro Help {1-812-785-1006}
What two-step authentication apps can I use? | Coinbase Pro Help {1-812-785-1006}
Using and managing security keys | Coinbase Pro Help {1-812-785-1006}
Portfolios FAQ | Coinbase Pro Help {1-812-785-1006}
Funding your account with EUR | Coinbase Pro Help {1-812-785-1006}
What is phishing? | Coinbase Pro Help {1-812-785-1006}
Bitcoin Cash FAQ | Coinbase Pro Help {1-812-785-1006}
How can I disclose a security vulnerability to Coinbase? | Coinbase Pro Help {1-812-785-1006}
How does the address book work? | Coinbase Pro Help {1-812-785-1006}
How do I gain access to a deceased family members Coinbase account? | Coinbase Pro Help {1-812-785-1006}
Stellar Lumens (XLM) FAQ | Coinbase Pro Help {1-812-785-1006}
How does margin trading work on Coinbase? | Coinbase Pro Help {1-812-785-1006}
Applying to the correct Coinbase entity in your business application | Coinbase Pro Help {1-812-785-1006}
How to enable a webcam | Coinbase Pro Help {1-812-785-1006}
Is a wallet address safe to display publicly? | Coinbase Pro Help {1-812-785-1006}
XRP (XRP) FAQ | Coinbase Pro Help {1-812-785-1006}
Restoring 2-step verification from a secret seed | Coinbase Pro Help {1-812-785-1006}
How is my bank account information protected? | Coinbase Pro Help {1-812-785-1006}
Why did I receive an unexpected device confirmation email? | Coinbase Pro Help {1-812-785-1006}
0x FAQ | Coinbase Pro Help {1-812-785-1006}
Funding your account with USD | Coinbase Pro Help {1-812-785-1006}
Understanding your Margin Portfolio | Coinbase Pro Help {1-812-785-1006}
Ethereum Hard Fork | Coinbase Pro Help {1-812-785-1006}
How do I create an API key for Coinbase Pro | Coinbase Pro Help {1-812-785-1006}
Supported Cryptocurrencies | Coinbase Pro Help {1-812-785-1006}
What is the GDPR? | Coinbase Pro Help {1-812-785-1006}
Managing open orders | Coinbase Pro Help {1-812-785-1006}
What is Ethereum Classic? | Coinbase Pro Help {1-812-785-1006}
Algorand (ALGO) FAQ | Coinbase Pro Help {1-812-785-1006}
I see the error "account temporarily disabled." What should I do? | Coinbase Pro Help {1-812-785-1006}
Coinbase Bundles FAQ | Coinbase Pro Help {1-812-785-1006}
Coinbase pricing and fees disclosures | Coinbase Help {1-812-785-1006}
Where can I find the API documentation for Coinbase Pro? | Coinbase Pro Help {1-812-785-1006}
Bitcoin Gold FAQ | Coinbase Pro Help {1-812-785-1006}
Verifying your residential address | Coinbase Pro Help {1-812-785-1006}
Whats the difference between fix API and rest API? | Coinbase Pro Help {1-812-785-1006}
How to send and receive cryptocurrency | Coinbase Help {1-812-785-1006}
Phone-based attacks | Coinbase Help {1-812-785-1006}
Why will my password reset require 24 hours to process? | Coinbase Pro Help {1-812-785-1006}
Zcash (ZEC) FAQ | Coinbase Pro Help {1-812-785-1006}
What are the limits on Coinbase Pro? | Coinbase Pro Help {1-812-785-1006}
Does Coinbase freeze accounts? | Coinbase Pro Help {1-812-785-1006}
Tezos (XTZ) FAQ | Coinbase Pro Help {1-812-785-1006}
Account history and reports | Coinbase Pro Help {1-812-785-1006}
Password requirements | Coinbase Pro Help {1-812-785-1006}
ETH Byzantium Fork FAQ | Coinbase Pro Help {1-812-785-1006}
Is a 2-step verification code required for every login? | Coinbase Pro Help {1-812-785-1006}
Coinbase accounts-Hawaii | Coinbase Pro Help {1-812-785-1006}
Is Coinbase present on social media? | Coinbase Pro Help {1-812-785-1006}
Is this email really from Coinbase? | Coinbase Pro Help {1-812-785-1006}
How to contact Coinbase Pro support | Coinbase Pro Help {1-812-785-1006}
Avoiding cryptocurrency scams | Coinbase Pro Help {1-812-785-1006}
What is a transaction hash/hash ID? | Coinbase Pro Help {1-812-785-1006}
What are the eligibility requirements for US Margin Trading? | Coinbase Pro Help {1-812-785-1006}
Security keys FAQ | Coinbase Pro Help {1-812-785-1006}
How can I make my account more secure? | Coinbase Pro Help {1-812-785-1006}
Pro mobile app overview | Coinbase Pro Help {1-812-785-1006}
How can I close my account? | Coinbase Pro Help {1-812-785-1006}
How do I change my country or state? | Coinbase Pro Help {1-812-785-1006}
What is Litecoin? | Coinbase Pro Help {1-812-785-1006}
Signing up for a Coinbase Card | Coinbase Pro Help {1-812-785-1006}
Can I create a Coinbase Pro account in the name of a trust? | Coinbase Pro Help {1-812-785-1006}
How do I get a crypto address? | Coinbase Pro Help {1-812-785-1006}
What is Bitcoin? | Coinbase Pro Help {1-812-785-1006}
Best practices | Coinbase Pro Help {1-812-785-1006}
No verification link in email | Coinbase Pro Help {1-812-785-1006}
How does Coinbase use my ID? | Coinbase Pro Help {1-812-785-1006}
Address book and crypto withdrawal address whitelisting FAQ | Coinbase Pro Help {1-812-785-1006}
Coinbase User Margin Trading Agreement | Coinbase Pro Help {1-812-785-1006}
W8 information | Coinbase Pro Help {1-812-785-1006}
Submit a Complaint | Coinbase Help {1-812-785-1006}
Compound (COMP) FAQ | Coinbase Pro Help {1-812-785-1006}
Bankruptcy trustee guide | Coinbase Pro Help {1-812-785-1006}
SegWit FAQ | Coinbase Pro Help {1-812-785-1006}
Device confirmation troubleshooting | Coinbase Pro Help {1-812-785-1006}
How to send a complaint | Coinbase Pro Help {1-812-785-1006}
Reporting phishing sites | Coinbase Pro Help {1-812-785-1006}
Coinbase Money Transmission and e-Money Regulatory Compliance | Coinbase Pro Help {1-812-785-1006}
What is Coinbase card? | Coinbase Pro Help {1-812-785-1006}
Overview of the trade view | Coinbase Pro Help {1-812-785-1006}
Bitcoin glossary | Coinbase Pro Help {1-812-785-1006}
Bitcoin SegWit2x Fork FAQ for merchants | Coinbase Pro Help {1-812-785-1006}
Coinbase Tax Resource Center | Coinbase Pro Help {1-812-785-1006}
Security key restrictions | Coinbase Pro Help {1-812-785-1006}
Form 1099-K Tax Information for Coinbase Pro and Prime | Coinbase Pro Help {1-812-785-1006}
Funding your account with GBP | Coinbase Pro Help {1-812-785-1006}
Address formatting standards | Coinbase Custody Help
Who do I contact for a subpoena request or dispute or to send a legal document? | Coinbase Pro Help {1-812-785-1006}
Funding your account with cryptocurrency | Coinbase Pro Help {1-812-785-1006}
Why am I unable to upload my ID? | Coinbase Pro Help {1-812-785-1006}
EOS (EOS) FAQ | Coinbase Pro Help {1-812-785-1006}
ID document verification | Coinbase Pro Help {1-812-785-1006}
Bitcoin Fork FAQ | Coinbase Pro Help {1-812-785-1006}
International support | Coinbase Pro Help {1-812-785-1006}
International support for Coinbase Pro | Coinbase Pro Help {1-812-785-1006}
Ethereum Classic (ETC) FAQ | Coinbase Pro Help {1-812-785-1006}
Destination Tag/memo FAQ | Coinbase Pro Help {1-812-785-1006}
Coinbase update on November 2018 BCH Hard Fork | Coinbase Pro Help {1-812-785-1006}
Orchid FAQ | Coinbase Pro Help {1-812-785-1006}
Payment methods for US customers | Coinbase Help {1-812-785-1006}
DAI FAQ | Coinbase Pro Help {1-812-785-1006}
Coinbase Help {1-812-785-1006}
CashAddr FAQ | Coinbase Pro Help {1-812-785-1006}
How to open a Coinbase Pro account | Coinbase Pro Help {1-812-785-1006}
Coinbase Custody Help
How to access privacy settings and make requests | Coinbase Pro Help {1-812-785-1006}
Managing Google Authenticator | Coinbase Pro Help {1-812-785-1006}
Stellar Lumens (XLM) FAQ | Coinbase Help {1-812-785-1006}
Supported cryptocurrencies | Coinbase Pro Help {1-812-785-1006}
API developer terms | Coinbase Pro Help {1-812-785-1006}
2-step verification FAQ | Coinbase Help {1-812-785-1006}
How can I update my legal name? | Coinbase Pro Help {1-812-785-1006}
How do I set up 2-factor authentication? | Coinbase Pro Help {1-812-785-1006}
Lost email access | Coinbase Pro Help {1-812-785-1006}
FAQ on API | Coinbase Pro Help {1-812-785-1006}
Applying for a Coinbase business account | Coinbase Pro Help {1-812-785-1006}
Bitcoin SV FAQ | Coinbase Pro Help {1-812-785-1006}
How to withdraw funds from a closed account | Coinbase Pro Help {1-812-785-1006}
I can't remember my password | Coinbase Pro Help {1-812-785-1006}
Slippage warning | Coinbase Pro Help {1-812-785-1006}
How do I verify my identity when using the mobile app? | Coinbase Help {1-812-785-1006}
Margin Trading FAQ | Coinbase Pro Help {1-812-785-1006}
Where can I spend Bitcoin? | Coinbase Pro Help {1-812-785-1006}
What is the Bitcoin Blockchain? | Coinbase Pro Help {1-812-785-1006}
Invest responsibly: recommended account management practices | Coinbase Pro Help {1-812-785-1006}
Privacy data request FAQ | Coinbase Pro Help {1-812-785-1006}
Landlines and 2-step verification | Coinbase Pro Help {1-812-785-1006}
Reset my password | Coinbase Pro Help {1-812-785-1006}
I have lost or need to update my phone or 2-step verification device | Coinbase Pro Help {1-812-785-1006}
Is Bitcoin secure? Has this network ever been hacked? | Coinbase Pro Help {1-812-785-1006}
Account recovery FAQ | Coinbase Pro Help {1-812-785-1006}
Dash (DASH) FAQ | Coinbase Pro Help {1-812-785-1006}
Cosmos (ATOM) FAQ | Coinbase Pro Help {1-812-785-1006}
Verifying your identity | Coinbase Pro Help {1-812-785-1006}
How is Coinbase insured? | Coinbase Pro Help {1-812-785-1006}
Minimum age requirement | Coinbase Pro Help {1-812-785-1006}
What is a Bitcoin wallet? | Coinbase Pro Help {1-812-785-1006}
Adding a payment method | Coinbase Pro Help {1-812-785-1006}
Basic Attention Token FAQ | Coinbase Pro Help {1-812-785-1006}
Prohibited regions | Coinbase Pro Help {1-812-785-1006}
Coinbase Pro Help {1-812-785-1006}
2-step verification FAQ | Coinbase Pro Help {1-812-785-1006}
Kyber (KNC) 101 | Coinbase Pro Help {1-812-785-1006}
Using Destination Tag on Coinbase Pro | Coinbase Pro Help {1-812-785-1006}
Does Coinbase Pro support smart contracts? | Coinbase Pro Help {1-812-785-1006}
Phone-based attacks | Coinbase Help {1-812-785-1006}
What are the eligibility requirements for US Margin Trading? | Coinbase Pro Help {1-812-785-1006}
submitted by PersonalDoctor to u/PersonalDoctor [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]

Groestlcoin 6th Anniversary Release

Introduction

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

UPDATED - Groestlcoin Core 2.18.2

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

How to Upgrade?

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

Other Linux

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

Download

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

Source

ALL NEW - Groestlcoin Moonshine iOS/Android Wallet

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

Features

Download

iOS
Android

Source

ALL NEW! – HODL GRS Android Wallet

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

Features

Download

Main Release (Main Net)
Testnet Release

Source

ALL NEW! – GroestlcoinSeed Savior

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

Features

Live Version (Not Recommended)

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

Download

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

Source

ALL NEW! – Vanity Search Vanity Address Generator

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

Features

Usage

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

Download

Source

ALL NEW! – Groestlcoin EasyVanity 2020

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

Features

Download

Source

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

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

Features

Remastered Improvements

Download

Source

ALL NEW! – BIP39 Key Tool

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

Features

Download

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

Source

ALL NEW! – Electrum Personal Server

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

Features

Download

Windows
Linux / OSX (Instructions)

Source

UPDATED – Android Wallet 7.38.1 - Main Net + Test Net

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

Changes

Download

Main Net
Main Net (FDroid)
Test Net

Source

UPDATED – Groestlcoin Sentinel 3.5.06 (Android)

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

Changes

Download

Source

UPDATED – P2Pool Test Net

Changes

Download

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

Source

submitted by Yokomoko_Saleen to groestlcoin [link] [comments]

Sharering (SHR) I believe this one is going to surprise so many. Already generating revenue and doing buybacks every week. Already over 10 000 registered users. Mainnet + app + masternodes and staking before EOY.

I got this stuff from Steve Aitchison, he wrote this review and posted it on Uptrennd. Figured I should put it on here as well since I truly believe this is an incredible moonshot. I'm personally holding SHR myself and am very convinced it will do extremely well.
Give a read through it and you will immediatly see why. Enjoy guys.
Introduction
Imagine for a second the following scenario. You are a 2 car family. One car is used every day going back and forth to work, for shopping, all the little jaunts you and your husband like to go on. Your grown children are at university and come home for the weekends so the other car sits in the driveway all week and doesn’t get used during the week. What a waste of a perfectly good car. You think to yourself we could put that car to good use and actually help to pay for university fees, by renting it out during the week. However, then you think “well it’s only a little Ford Fiesta who’s going to want to rent that.” Well, it turns out a lot of people want to rent it and for a good price: £34 ($40) per day, a possible $800 per month.
Peer to peer car sharing has grown massively over the last few years and people are making serious money by letting our vehicles on a daily basis, emulating the Airbnb model. In fact companies like Turo, Getaround and Drivy, which has just been acquired by Getaround for $300 Million, are bringing in serious investors like Toyota, Softbank Vision Fund, Menlo Ventures, and IAC to the tune of over $800 Million.
A key difference between rental companies and peer to peer is that they have vastly improved technology with app interfaces that make locating assets and resources, reserving and using them, and making payment convenient and seamless. This, combined with location-specific analytics, allows by-the-minute access to assets and resources (e.g. cars or bicycles) and enables customers to pick up and drop these assets where and when convenient.
Car sharing is just one example of an industry that is being disrupted. We have seen, experienced and read about the amazing growth of Airbnb which is now estimated to be valued at $38 Billion. Airbnb has been so successful that companies like booking.com are trying to get in on the act by adopting a similar model when it comes to booking accommodation.
There is also the phenomenal rise of bicycle rentals which we see in cities all over the world, not quite the same as peer to peer sharing, but it’s another rental model that is ripe for being disrupted by the new sharing model.
With this business model in mind what other areas could it be used in:
Transport: Used for the rental of cars, trucks, scooters, trailers, and even heavy vehicles. Delivery Drivers: Facilitate booking and payment for delivery drivers. Agriculture: Garden sharing, seed swap, bee-hive relocation, etc. Finance: Peer to peer lending Food bank, social dining Travel Tours, shared tour groups Real Estate Airbnb, co-housing, co-living, Couchsurfing, shared office space, house swapping. Time: Labour, co-working, freelancing Assets Book swapping, clothes swapping, fractional ownership, freecycling, toy libraries. Transportation Car sharing, ride-sharing, car-pooling, bicycle sharing, delivery company, couriers And so much more!
This newly emerging, but highly fragmented sharing industry, is currently worth over $100 billion. It is predicted to grow to at least $335 billion by 2025.
As you can see from a few examples above the sharing economy has a lot of room to grow but what it doesn’t have, yet, is a company who can facilitate ALL of the above use cases in one place.
That is until now!
ShareRing is disrupting the disruptors by bringing everything together in one place and making it easy for you and me to share anything and everything and making it as easy as opening an app on your phone.
Business Case
The sharing market has exploded over the last several years. This is due, in part, to the digital age we live in, as we now have over 2.82 Billion people with smart phones around the world. It also due to how easy the business model of sharing lends itself to the digital world, and how with the simple installation of an app we can access a plethora of markets to rent almost anything from.
Due to this rise of digital platforms and the proliferation of smartphones, revenues coming from sharing economy platforms are only expected to increase. It is estimated to grow to a $335 billion industry in 2025, compared to its $14 billion value in 2014. (PwC UK).
The beauty of the sharing economy is that it is a win/win/win situation for the person who wants to rent something for a few days or weeks, the person who is renting out, and the company who facilitates the ease of the transactions between the renter and the person renting out. Typically the renter will save a lot of money whilst renting out someone else’s apartment, car, bicycle, clothes, dog sitting services etc and they can almost be assured of quality due to the social side of the business model with reviews from real people. The person who is renting out can make additional income and will want good reviews and therefore keep the standard of service higher. The company that is facilitating all of this can make a lot of money on transaction fees, as well as from advertising, and partnership deals, and obviously have an exit strategy for possible buyouts.
When it comes to looking at the business model, ShareRing fits in to the Commission Based Platform as described in Ritter and Schanz study where they looked at the core difference in difference business models of the sharing economy: Singular Transaction Models, Subscription-Based Models, Commission-Based Platforms and Unlimited Platforms.)
Commission Based Platforms are dominated by (at least) triadic relationships amongst providers, intermediaries and consumers with a utility-bound revenue stream. These business models enable their customers to switch between provider and consumer roles by creating and delivering the value proposition. Only a few employees work for the intermediary and the value creation and delivery is externalized. From a consumer perspective, consumers are empowered to collaborate with each other and to design the collaboration terms by negotiating the terms and conditions of the content, creation, distribution and consumption of the value proposition. Depending on the orientation of the value proposition, consumers purchase commodities (Tauschticket, ebay), access commodities in a defined timespan (booking.com, Airbnb) or buy services (uber, turo) from occasional and professional providers found via an intermediary. The intermediary mainly focuses on nurturing a community feeling and reducing exchange insecurity by incorporating rating systems, micro-assurances and standardizations of payment and delivery into the platform. The platform mainly takes commissions for successful matching and executing trade. (Journal of Cleaner Production Volume 213, 10 March 2019, Pages 320-331)
The USP of the ShareRing Business Model
The USP that ShareRing has is that it brings all of the different forms of sharing together in one app through partnerships and onboarding of users.
No other company, to date, is bringing everything together in such a way. However there are other factors that make ShareRing unique, which we will look at.
Token Economics
SHR is a utility token and will be used to pay for transactions on the network, such as 'new booking', 'add asset', etc. SHR is used by providers to pay for their access to the ShareLedger blockchain, including the addition of assets, renting out of assets, adding attributes, adding smart contracts, and other features.
SharePay (SHRP) is used by customers to pay for the rental of assets.
Masternodes will also be a main feature of the SHR token. When a transaction fee is incurred, it will be distributed in a way that allows for masternode holders who provide a service to the platform to receive a reward from each transaction. Transaction fees are charged to sharing providers in SHR. The distribution of transaction fees will be as follows: 50% - will be distributed amongst the active masternode holders who host an active node on the blockchain at that point in time (these holders provide a service to the platform). The distribution will be based on a calculation of the Total Amount Staked and the total continuous uptime of the node. 50% - will be provided to ShareRing Ltd (view ShareRing owned masternodes) for various purposes that contribute to working capital and platform growth.
Leased Proof of Stake Consensus
ShareRing have chosen the Leased Proof-of-Stake protocol as the consensus algorithm for ShareLedger. This choice is based on the practicality and security benefits evident in the Waves platform. It is also much more cost effective than Proof-of-Work (POW), and will not suffer from the current issues Bitcoin and other POW cryptocurrencies are facing such as scalability and electricity consumption.
As explained above master nodes will be a main feature but there is the other feature of lightweight nodes. A user with a lightweight node will be able to stake their tokens to a full node of their choosing and participate in reaching consensus. They will also be free to cancel their leasing at any time as there are no contracts or freezing periods. The more tokens that have been staked in a full node, the higher the probability the node will have in producing the next block. Since the reward is given based on the total number of tokens staked in the full node, there will always be a trade-off between the size of the full node and the percentage of the reward. As an average user of the platform, you will not need to have technical knowledge on how to set up a node nor will you have to download the entire blockchain in order to stake your tokens. Only a user who sets up a full node will be required to do this, making it simpler than ever for users to earn a reward for supporting the platform.
The return expected for staking is expected to be around 6 - 8% although this has yet to be confirmed.
Buybacks
ShareRing are currently implementing a series of buybacks which started in the beginning of November:
The buyback operation is done at a random time during the week.
If there is enough liquidity, SHR tokens will be bought through a single market order at the time of buyback. In case there is not enough liquidity, a limit buy order at last sell order price will be placed on the market, and will remain open until it gets filled.
The buyback program was implemented to test the API purchase process for when live transactions occur on ShareLedger
The Buyback Program is expected to:
  1. Reduce the supply of ShareTokens available in both public and private markets
  2. Bring New capital and fund inflows into the Shareledger
  3. Substantially magnify value creation for the ShareToken holders
The Token Flow
ShareRing will bring in hundreds of merchants to list their rental products, either exclusively or as part of an aggregator system e.g. When you look at the likes of trivago.com they will list the best hotel prices from multiple merchants who are listed on their website. Essentially ShareRing will become part of the aggregator ecosystem and be listed on sites like trivago.com as well as have exclusive agreements with merchants who are listed directly on their app.
ShareRing’s USP is that they have everything on one place as well as their OneID module with means buyers can get a hotel, rent a car, rent their ski equipment, book events all through the one app and using the OneID.
With that in mind they are going to attract a lot of merchants.
This is where it gets exciting so pay attention to this part.
When a merchant is part of the ShareRing ecosystem and a buyer rents something from that merchant ShareRing will take a small % commission from that transaction. So say someone books a hotel for $100 for the night, ShareRing might take $0.50 as a commission. What ShareRing will then do is go to one of the exchanges that ShareRing (SHR) is listed on and buy SHR tokens directly using an API system using USDT.
Now, the actual commission has not been disclosed yet however if we assume even a 0.25% commission that means for every $100 Million worth of bookings made through the app will net ShareRing $250,000 which means buy backs of $250,000 for the SHR token, which increases the liquidity of SHR on the exchanges.
If you think $100 Million of bookings is a lot, booking.com customers book around 1.5 Million rooms per day, if we estimate an average of $50 per room that is $75 million of bookings PER DAY or $2 Billion worth of bookings per month.
This revenue coupled with revenue from OneID and eVOA makes ShareRing profitable almost from day one of the app going live.
OneID And eVOA
Another exciting development from the ShareRing team is the collaboration between ShareRings Self Sovereign Identity protocol and third party providers to bring OneID and eVOA which will utilise OneID
With the huge rise in E-commerce and with over 2.82 billion people who now own a smartphone we are entrusting our personal information to more and more centralised entities. These entities are frequently hacked and our information is leaked to outside parties.
ShareRing aims to tackle this with their service OneID module.
ShareRing’s OneID solution protects users' data by handling Know Your Customer (KYC) information through third parties and ShareRing’s Self Sovereign Identity Protocol. ShareRing does not hold any identifying information anywhere on its servers. It provides the ultimate security for the renter and also the provider, as the Protocol encrypts and stores your data in a secure manner within your device. Essentially, this means that it is near impossible for a hack or data leak to happen, simply because there is no centralized server of data for hackers to exploit.
The OneID module is very easy to use. The end-user needs to complete their ID submission only once, with the entire submission process requiring less than two minutes to complete. Once this step has been completed, the customers KYC is destroyed by the 3rd party document verification system and the OneID module allows merchants to verify a customer’s identity via a hashed verification packet, stored on the users device and ShareLedger. This removes the need for merchants to store or see personal information; safeguarding both merchants and users from fraud.
To create your ShareRing OneID, simply:
  1. Take a picture of your government ID document
  2. Take a selfie
  3. Confirm and submit your details
This is something I am really excited about for ShareRing and they already have made partnerships for other companies to use this feature which is another income stream for ShareRing.
eVOA
E-Visa On Arrival allows applicants to apply online and receive a travel authorisation before departure – this eVOA can be shown at dedicated Thailand immigration counters on arrival at major Thailand airports, allowing travellers to pass through in minutes.
OneID system is scheduled to become the lynchpin technology in Thailand’s electronic Visa On Arrival (eVOA) system; one of only two companies to partner with Thai authorities to provide this service. The new Visa system eliminates much of the hassle involved in entering the country:
This is a strong validation of the OneID system - immigration controls are some of the most scrutinized processes in any branch of government, and if the OneID solution can operate to their standards then it is truly business-ready. As explained by our COO, Rohan Le Page:
“We are providing our OneID product for Thailand e-VOA (Visa On Arrival) that allows 5 Million travellers from 20 countries including China and India to complete the visa process on their mobile through our app. This provides a streamlined immigration process that negates the need for an expensive and time-consuming process when you get off the plane. Additionally, fraud is mitigated with several extra layers of security in the back end including our blockchain (ShareLedger) consensus model that makes all data immutable and all but impossible to hack.”
Profit Margins on OneID
So how does ShareRing make money from OneID and eVOA?
With each application for an eVOA using the OneID module ShareRing will make an undisclosed commission. The e-VOA is available to citizens of 21 different countries and is intended for those who will be holidaying in Thailand and not working in the country.
This means that each eVOA will last for a period of around 15 days which effectively means that ShareRing will get commission multiple times from each person travelling to one of the 21 countries listed below:
Andorra, Bhutan, Bulgaria, China, Ethiopia, Fiji, India, Kazakhstan, Latvia, Lithuania, Maldives, Malta, Mauritius, Papua New Guinea, Republic of Cyprus Romania, San Marino, Saudi Arabia, Taiwan, Ukraine, Uzbekistan
The profits on this alone, according to projections, are worth millions of dollars per year to ShareRing, with a healthy growth of about 35% in raw profit over the next 5 years, ultimately netting the company about $1.5 million profit per quarter.
The ShareLedger Blockchain Platform
ShareRing will utilize the registered intellectual property from the existing KeazACCESS framework (KEAZ: A car sharing company founded by Tim Bos) as well as improving it the blockchain experience in their team.
It will consist of fo the primary elements:
SharePay (SHRP) – SharePay is the base currency that will allow users of the ShareRing platform to pay for the use of third party assets. ShareToken (SHR)
ShareToken (SHR) is the digital utility token that drives sharing transactions to be written to the ShareRing ledger that is managed by the ShareRing platform.
Account – This will be a standard account, which such an account being represented by a 24-byte address. The account will contain 4 general fields:
SHRP – SharePay token balance
SHR – ShareToken balance
ASSETS – linked/owned by the account (see below for definition of an Asset) ATTRIBUTES – Any additional attributes that are associated with this account. These attributes may be updated or added by Sharing Economy providers that utilise the ledger such as ID checks by rental companies. These attributes may be ‘global’ (i.e. used by any sharing providers) or ‘local’ (i.e. used by a specific sharing provider).
Assets – An asset represents a tangible real-world or digital asset that is being shared, such as a car, a house, industrial machinery, an e-book, and so on.
Smart Contracts – Similar to a number of other blockchain platforms, such as Ethereum and NEO, the ShareLedger blockchain will feature highly customisable smart contracts. These Smart Contracts will allow for decentralised autonomous applications that can be attached to an asset and/or account. Every smart contract will be Turing complete, meaning it will have the ability to implement sophisticated logic to manage the sharing of the assets. The smart contracts will be tested and reviewed by ShareRing in a sandbox as well as audited by reputable third-party code auditors prior to implementation.
Proof of Stake Consensus
ShareRing have chosen the Leased Proof-of-Stake protocol as the consensus algorithm for ShareLedger. This choice is based on the practicality and security benefits evident in the Waves platform. It is also much more cost effective than Proof-of-Work (POW), and will not suffer from the current issues Bitcoin and other POW cryptocurrencies are facing such as scalability and electricity consumption.
The ShareRing App
At the heart of the ShareRing project lies the ShareRing app:
A universal ‘ShareRing’ app is being developed that will allow anyone to easily see and use any sharing services around them. Each partner will have the option of developing a ‘mini’ app within the ShareRing app that will have functionalities specific to that partner. The app will use geolocation-based services to display the ShareRing services that are nearby
Social Media Presence
Coming from a social media background I feel this is an extremely important area to look into, especially in the crypto world.
ShareRing has done an okay job in growing their social media presence however I feel it could be much better. Here is a look at some of the key stats for their online social media presence:
Youtube: 191 Subscribers Instagram: 238 Followers Linkedin: 376 Followers Telegram: 6,525 members (very active) Twitter: 2,216 Followers (Fairly regular updates) Facebook: 1,965 Followers
Whilst social media may not be a priority just now I feel there has to be a big presence with image-based platforms and video-based platforms. Youtube and Instagram should be made a priority here as it spans all generations:
Other News on ShareRing
There is a lot of stuff going on at the moment with ShareRing which is what makes it an exciting prospect. Rather than give information on each of them here are some highlights provided by the ShareRing team.:
- ShareRing's revolutionary ID management based module OneID.
- Worlds first Blockchain based eVOA in place with major Thai company targeting 5 to 10 million travellers from 20 countries.
- 2.6 million International Hotels/ Accommodation coming on to the Platform. Lots more to come!
- Partnership with HomeAway
- 200,000 Activites, Tours and Events added to the ShareRing App
- Multi Global Car Sharing Partnerships
- 1 Partner Directly Integrating SHR's OneID consisting of 1.2 million Vehicles across 150 Countries
- Luxury Car Brand Sharing Platform purely based on SHR
- SHR payment system SHRP available in 10% Taxi Terminals in Australia
- SHRP available in 10,000 EFTPOS Terminals Australia wide
- White Labelling Services incorporating ShareRings revolutionary OneID
- 20 Significant Unannounced Partnerships, more to come!
- Major Partners include -
- BYD (Largest Electric Car Maker in the World)
- DJI (Largest Drone Maker in the World)
- Keaz (300 locations around the world)
- Yogoo EV Car Sharing
- MOBI Alliance Member
Overview of Positives and Negatives
Negatives
Social Media and marketing possibly needs to be ramped up in order to bring more awareness to the project.
The roadmap and white paper has not been updated recently for 2019/2020 but this I believe is coming soon.
Positives
With a low market cap project like ShareRing the risk to reward ratio is very good for retail and institutional investors.
Technical analysis of current prices, currently at 31 Satoshi, is also very good with resistance levels at 50, 77 and 114 Satoshi which would be nearing its all time high.
Referral program will increase the numbers of users that are currently using the site.
If ShareRing can capture even a small % of the overall sharing market then success looks assured.
There are 20 new announcements coming up and with Tim Bos looking for more partnerships it seems likely that ShareRing will break ATH prices soon.
Great long term hold, in my opinion.
Realistic Expectations of ROI
Short term (4 weeks - 12 weeks)
Short term looks great for ShareRing both from a TA point of view and a fundamental point of view.
With lots of news still to come out about ShareRing there is not going to be a shortage of fundamentals to drive the price up. From a TA point of view the next line of resistance stands at around the 50 Satoshi level which would complete a massive cup and handle formation from August 24th of this year. After that we are looking at resistances of 77 and 114 to reach near the all time highs which i expect ShareRing to reach going into 2020.
Long term (6 Months - 2 Years)
If ShareRing can onboard users and keep on making partnerships at the same rate there will be no stopping it. It’s all about onboarding the users and utilising the most powerful marketing tool ever - word of mouth!
When a great app is realised with great and useful functionality then it tends to go viral and I am hoping this happens for ShareRing.
With a market cap at the moment of just under $6 Million then I don’t think it’s crazy to talk about 1000% increases in the next 2 years and I really believe that is being extremely conservative, given where we think crypto is heading as a whole.
submitted by Grills93 to CryptoMoonShots [link] [comments]

Cancel BTC Transfer Transaction Blockchain 2019 - YouTube How to Trace a Bitcoin Transaction using a Bitcoin ... What to Do if Your Bitcoin Transaction Gets Blockchain - How To Verify A Bitcoin Transaction And Get ... How to track your bitcoin

To convert addresses back into hashes, reverse the base58 encoding, extract the checksum, repeat the steps to create the checksum and compare it against the extracted checksum, and then remove the version byte. Raw Transaction Format¶ Bitcoin transactions are broadcast between peers in a serialized byte format, called raw format. It is this form of a transaction which is SHA256(SHA256 ... The aim of this blog is to help you go through all those nitty-gritty details about a Bitcoin transaction, the underlying protocols that made it so popular and trustworthy. Bitcoin overview. Let ... The Bitcoin.com Explorer provides block, transaction, and address data for the Bitcoin Cash (BCH) and Bitcoin (BTC) chains. The data is displayed within an awesome interface and is available in several different languages. The console window in the Bitcoin Core Wallet. If you have been given a TXID by your bitcoin wallet, it’s probably already in its “searchable” format (reverse byte order).. 2. Spending outputs. You use a TXID when you want to use an existing output as an input in a new transaction.. To refer to an existing output, you use the txid it was created in, along with the vout number for that ... A block chain is a transaction database shared by all nodes participating in a system based on the Bitcoin protocol. A full copy of a currency's block chain contains every transaction ever executed in the currency. With this information, one can find out how much value belonged to each address at any point in history.. Every block contains a hash of the previous block.

[index] [32583] [33410] [48675] [42883] [25601] [33388] [35233] [31029] [4696] [17195]

Cancel BTC Transfer Transaction Blockchain 2019 - YouTube

For more tips like these visit http://bodymindsuccess.com/bitcoin or subscribe to our channel Wondering how to refund a bitcoin transaction using your BitPay Merchant Dashboard? This video gives you the answers you need to start. Like us on Facebook: ... A look at how a transaction is constructed This video is part of a larger online course, "From Barter to Bitcoin: Society, Technology and the Future of Money... Tracking Bitcoin Transactions on the Blockchain ... How To Verify A Bitcoin Transaction And Get Your Hash ID - Duration: 2:17. Crypto Currency Wealth 75,594 views. 2:17. How to Accept Bitcoin on ... The Crypto Dad shows you how to trace a Bitcoin transaction. Important software used is: Electrum bitcoin wallet: https://electrum.org/#home The Blockchain e...

#