COOLING CPU - BITCOINMINEER

Some Basics Of Bitcoin

For someone not familiar with Bitcoin, the first question that comes to mind is, "What is Bitcoin?" And another common question that is often asked relates to the Bitcoin price. It started out a under 10 cents per Bitcoin upon its introduction in early 2009. It has risen steadily since and has hovered around $4000 per Bitcoin recently. So regarding Bitcoin value or the Bitcoin rate this is a most remarkable appreciation of value and has created many, many millionaires over the last eight years.
The Bitcoin market is worldwide and the citizens of China and Japan have been particularly active in its purchase along with other Asian countries. However, recently in Bitcoin news the Chinese government has tried to suppress its activity in that country. That action drove the value of Bitcoin down for a short time but it soon surged back and is now close to its previous value.
The Bitcoin history chart is very interesting. Its creator was an anonymous group of brilliant mathematicians (using the pseudonym Satoski Nakamoto) who designed it in 2008 to be "virtual gold" and released the first Bitcoin software in early 2009 during the height of the USA economic crisis. They knew that to have lasting value, it like gold had to have a finite supply. So in creating it they capped the supply at 21 million Bitcoin.
Bitcoin mining refers to the process by which new Bitcoin is created. With conventional currency, government decides when and where to print and distribute it. With Bitcoin, "miners" use special software to solve complex mathematical problems and are issued a certain number of Bitcoin in return.
A question that then arises is, is Bitcoin mining worth it. The answer is NO for the average person. It takes very sophisticated knowledge and a powerful computer system and this combination of factors makes it unattainable for the masses. This applies even more to bitcoin mining 2017 than in past years.
Many wonder, who accepts Bitcoin? This question gets asked in various ways, what are stores that accept bitcoin, what are websites that accept bitcoins, what are some retailers that accept bitcoin, what are some places that accept bitcoin and where can I spend bitcoin.
More and more companies are beginning to see the value of accepting cryptocurrencies as a valid payment option. Some major companies that do are DISH network, Microsoft, Expedia, Shopify stores, Newegg, Payza, 2Pay4You, and others.Two major holdouts at this time are Walmart and Amazon.
Ethereum is the strongest rival to Bitcoin in the cryptocurrency market and many wonder at the question of Bitcoin vs Ethereum. Ethereum was created in mid-2015 and has gained some popularity but still ranks far behind Bitcoin in usage, acceptance and value.
A question that often comes up often relates to Bitcoin scam. This author has a friend who made a purchase from a company that promised 1-2% growth per day. The company website listed no contact information and after a couple months the website simply vanished one day and my friend lost all the money he had invested which was several thousand dollars.
One has to know how to buy Bitcoins, how to purchase Bitcoin or how to buy Bitcoin with credit card in order to get started. Coinbase is a very popular site to do this. Their fee is 3.75% and the buying limit is $10,000 per day. This would probably be the easiest way to buy bitcoins.
Others would like to buy Bitcoin with debit card. Coinbase also provides this service and has clear step by step instructions on how to proceed with either your debit or credit card.
There are those who would like to buy Bitcoin instantly. This can be done at Paxful, Inc. and can be done through W. Union or any credit/debit card.
Other common questions that come up are what is the best way to buy Bitcoins, the best way to get bitcoins or where to buy bitcoins online. The easiest way is probably to purchase it through a digital asset exchange like the previously mentioned Coinbase. Opening an account with them is painless and once you link your bank account with them you can buy and sell Bitcoin quite easily. This is quite likely also the best place to buy Bitcoins.
One must know what a Bitcoin wallet is and how to use it. It is simply the Bitcoin equivalent of a bank account. It allows you to receive Bitcoins, store them and send them to others. What it does is store a collection of Bitcoin privacy keys. Typically it is encrypted with a password or otherwise protected from unauthorized access.
There are several types of digital wallets to choose from. A web wallet allows you to send, receive and store Bitcoin though your web browser. Another type is a desktop wallet and here the wallet software is stored directly on your computer. There are also mobile wallets which are designed for use by a mobile device.
A question that occasionally comes up is that of Bitcoin stock or how to buy Bitcoin stock. By far the most common way to proceed in this area is to buy Bitcoin directly and not its stock.
There is one entity called Bitcoin Investment trust which is an investment fund that is designed to track the market flow of Bitcoin. Some analysts however are calling this a risky way to become involved in this marketplace.
The Bitcoin exchange rate USD is a closely watched benchmark both on a daily basis and long term over the last 8 years since its introduction to the world's financial marketplace. A popular company to receive the most current rate in Bitcoin valuation is XE. They show Bitcoin to USD valuation and also the complete Bitcoin price chart, the Bitcoin value chart and the Bitcoin to USD chart. If you ask, "How much is one Bitcoin?" you will always know from their continuously updated charts.
Similar questions that come up in this area relate to the bitcoin rate history, the bitcoin price chart live, the bitcoin to dollar exchange rate, the bitcoin dollar chart and the bitcoin 5 year chart. The previously mentioned website, xe, is also a good source for answers to these questions.
Regarding Bitcoin cash, ie. to get USD from selling Bitcoin, Bitwol is one company that enables you to do this. WikiHow is another company that will take you through this process.
submitted by shomesrobery to BestBitcoinCasinosa [link] [comments]

Interview With Eddie Jiang: How CoinEx Is Adapting To The Exchange Space And Growing

Interview With Eddie Jiang: How CoinEx Is Adapting To The Exchange Space And Growing
Written by chaintalk.tv
https://preview.redd.it/v238540taz751.jpg?width=1280&format=pjpg&auto=webp&s=2a852e171a74e49da802d7c12fadba452cf4cf43
We recently had the opportunity to interview the VP of ViaBTC Group, Eddie Jiang. ViaBTC Group owns popular crypto exchange CoinEx and ViaBTC Pool. In this interview Eddie discusses being the first exchange to use BCH as the base currency, ViaBTC Pool and integrating with CoinEx, new features and ambassador program, and competing with other exchanges like Binance and Huobi. Please enjoy the interview below.
How come you decided to open up CoinEx to other cryptos other than just BCH?
Eddie Jiang: CoinEx is the world’s first exchange to implement Bitcoin Cash as a base currency. At that time, it was evident that there was a demand for BCH trading markets, and we are the first to explore this opportunity. It also shows our determination to support the BCH’s development.
As CoinEx is developing, our goal becomes bigger and we are aiming at the global market. We need to constantly improve our product diversification to meet the different needs of more users, so we open up to other cryptos. In the past six months, we have listed more than 50 new tokens. Up to now, we have listed 129 cryptos and 313 markets. Besides, in addition to spot trading, CoinEx also supports perpetual contract and other derivatives trading.
How does CoinEx integrate with the ViaBTC Pool?
Eddie Jiang: ViaBTC Group announced a strategic upgrade, which included a new organizational structure, product innovations and service improvements, on 30 May.
As part of the change, the Group has established three dedicated business units (BU): the financial services BU, consisting of ViaBTC mining pool and CoinEx exchange; the infrastructure services BU, including ViaWallet and Blockchain Explorer; and the ecological development BU, focusing on the research and development of public chain technology and the construction of the ecology.
After halving, the combination of mining and finance will become closer and closer. Investing in mining machines is like buying a Bitcoin option. Miners need more flexible financial products to maintain and increase the value of assets, or hedging services. Based on this judgment, the operations of ViaBTC mining pool and CoinEx exchange will be integrated in the future to realize the financial empowerment of the mining pool to meet the diverse financial needs of miners.
Features of this integrated product upgrade can be summarized as: “ The mining pool is the wallet, and the wallet is the transaction.” ViaBTC is the world first mining pool that has a wallet embedded in the mining pool account. Users do not need to transfer the mined coins, and can realize the function of coin exchange within the wallet. For example, they can directly convert the mined coins into USDT to pay electricity bill. What’s more, users can store, deposit and withdraw their revenue, and transfer assets to CoinEx at any time without charge, as well as complete other operations on the exchange, such as purchasing wealth management products for asset preservation and appreciation. In addition, we also provide hedging services. All of the above functions can be completed in one stop in the mining pool, without the need to transfer assets between different platforms.
The exchange empowers the mining pool, and the mining pool will further bring more traffic and resources to the exchange. The two complement each other and development coordinately.
CoinEx has recently added many new features. Can you talk about what new updates were made to the platform and why you made them?
Eddie Jiang: We have always attached great importance to the development of overseas markets since our establishment, and one of our major goals this year is to cover at least 10 different languages speaking markets.
To realize this and to meet the needs of more users worldwide, CoinEx has been continuously optimizing and upgrading its operating strategies, products and services. Our product diversifications are constantly improving. As I said before, we have launched leverage trading, perpetual contract trading, and wealth management products in addition to just spot trading. However, we don’t ignore the importance of spot trading. More mainstream, popular, and high-quality tokens have been listed, and up to now, there are 129 tokens and 313 trading pairs on CoinEx.
During the epidemic, we have never slowed down our development. Lacking of the OTC service has always been a shortage for CoinEx. In March, we partner with Simplex to integrate the first fiat onramp to our platform. People now can buy crypto with their credit cards, which lowers the threshold for more people to enter the crypto world. Moreover, we announced global strategic partnership with Matrixport to provide people with large amount of fiat to crypto needs the OTC service. These newly launched services also help to attract more users.
At the same time, CoinEx has been launched in Arabic, Italian, English, Japanese, Russian, Korean and other 16 languages. Earlier we also carried out product upgrades, making the UI and function sections clearer.
In terms of operations, we launched an upgraded CoinEx Ambassador program in March. To best utilize each ambassador’s personal strengths, there are four categories of CoinEx Ambassador with different responsibilities, namely Referral Ambassador, Marketing Ambassador, Operation Ambassador, and Business Ambassador, which will expand our brand’s exposure and help CoinEx grow into a more international exchange platform.
From March until now CoinEx has seen a 100% increase in user registrations. Why is that and are you able to see where they are coming from?
Eddie Jiang: Because of the efforts mentioned above, in 2020, we’ve seen an exponential increase in activity in just the past few months alone. In this year alone, CoinEx’s daily registered users increased by 100%. These new users mainly come from markets such as the Middle East, Asia Pacific, and more.
Interestingly, we saw an uptick in traffic from the Middle East in March. User growth in Southeast Asia also picked up significantly, newly registered users increased by 133.6% in April.
With Binance, BitMex, Huobi, Bybit, and Deribit, controlling most of the crypto futures and options markets, where do you see CoinEx fitting in? How do you plan to capture market share from these large exchanges?
Eddie Jiang: We won’t compete with others. We focus on ourselves to improve products and our goal is to be better than yesterday.
Our pace is solid and steady, instead of focusing on temporary heat and flow. We have always attached great importance of spot trading, and we are committed to be responsible for users’ investment. We have set up CoinEx Institution, which is dedicated on project research. A listing committee consist of core team members review and vote on projects recommended by the CoinEx Institution. In this way, fraud projects are avoided as much as possible.
Besides, we will focus on niche areas with great potential. For example, Southeast Asia and the Middle East. CoinEx can serve users in those countries well by providing a platform with rich cryptos to trade, and will pay more efforts on refined operations in different countries.
Moreover, CoinEx has a very complete ecosystem. Financial services, infrastructure, and ecological development, the three business units complement each other. The infrastructure BU is our cornerstone and is positioned as a defensive product; the financial service BU is a cash cow and is positioned as an aggressive product; the ecological development BU focuses on the public chain ecology and is the future infrastructure.
What is the geographical breakdown of the CoinEx userbase?
Eddie Jiang: The current proportion of CoinEx’s overseas users has reached 80% of the total registered users, and mainly in Australia, Southeast Asia, North America, Middle East and South Korea.
Do you have plans to focus on any certain jurisdictions? How will you do that?
Eddie Jiang: When we evaluate regions, two things matter: policy and potential.
Whether an exchange’s business expansion in a region is smooth or not largely depends on the region’s policies. If the region is not very friendly towards cryptocurrency or has repeated attitudes, there will be more difficulties and the cost will be much higher.
For a region’s development potential, we need to think about the demand and market development status. South Korea, Southeast Asia, the Middle East and other regions are all areas with good potential for cryptocurrency development. Compared with Europe and America, policy risks in these countries are lower, and the supervision mechanism is relatively complete. The public has a high degree of awareness of cryptocurrencies. Besides, some regions or countries have inflation problems due to political and economic reasons.
CoinEx will continue to focus on the Middle East and South Asia, which are relatively niche. India has just lifted ban on cryptocurrency trading this year, and there are many cryptocurrency investors in Indian. CoinEx can serve them well by providing a platform with rich cryptos to trade. More people in the Middle East are interested cryptos, especially in countries that are subject to economic sanctions or high inflation. For those people, cryptocurrencies are one of the best choices for asset preservation.
Since the CoinEx Ambassador program launched in March, it has been almost three months. We are conducting the second round of ambassador recruitment. This time, we will use the power of ambassadors to expand our recruitment coverage and strive to attract more crypto enthusiasts from all over the world to grow together with CoinEx. Moreover, we will launch the National Expansion plan and leverage on the CoinEx and ViaBTC mining pool resources, to further explore the Russian market. At the market level, we will make more PR efforts in local markets, and start refined operations.
What is CoinEx Chain and CoinEx DEX?
Eddie Jiang: CoinEx Chain is a public chain built on the Tendermint consensus protocol and the Cosmos SDK. It consists of three dedicated public chains parallel to each other. Among these three chains, CoinEx DEX meets the most basic needs of DeFi for token issuance, transfer, and transactions. The Smart Chain is designed to meet the needs of complex financial scenarios and delivers programmable cash. The Privacy Chain facilitates privacy and security.
On November 11, 2019, we took the lead in launching the Mainnet of CoinEx DEX. CoinEx DEX is the world’s first public chain dedicated to decentralized transactions. Users can easily manage their digital assets on it.
CoinEx DEX can fully satisfy the following conditions: users have private keys at their own disposal; transfers and transactions are all completed on-chain, which is 200% transparent and checkable; the issuance, transfer, and transaction of tokens do not require review or permission; the community governance and operation is decentralized, similar to EOS, and validators are introduced to the community ecosystem construction and governance. There are currently 41 validators.
It also has extreme performance. TPS reaches as high as 10,000 and transactions are confirmed within seconds. The transaction fee, 0.0001 US dollars for each transaction, is negligible.
Third, it’s simple and easy to use. The new operation interface design helps beginners get started quickly; with the one-click token issuing module, users only need to fill in a few items to issue tokens; the built-in automated market-making module guarantees liquidity.
How will CoinEx DEX improve the decentralized exchange space that has been unable to gain much adoption?
Eddie Jiang: There are many challenges and difficulties facing centralized exchanges. The first difficulty is security. Security is a huge concern for CEXs. Over the last 10 years, hackers have stolen more than $1.5 billion from centralized exchanges. In fact, research groups estimate that hackers stole somewhere between $950 Million and $1 Billion from centralized exchanges in 2018 alone. There were also incidents of coin thefts in other exchanges in 2019. Many exchanges, such as Mt. Gox, Youbit, were forced to file for bankruptcy and shut down as a result of hacks.
The second is high management costs. Centralized exchanges need to list a large number of cryptocurrencies and each of them have different trading pairs. That entails huge efforts in development and maintenance and, thus, high management costs.
The last is global policies. Cryptocurrency is faced with different regulatory policies in different countries. Every time a centralized exchange enters a country, it needs to adapt itself to local regulatory policies for compliance. This is a holdback for the exchange’s rapid market expansion globally. Such adaptation will also bring a huge learning cost for the exchange team.
Obviously, these problems can be well solved by DEX. CoinEx DEX is a true DEX with full open source and full community governance, as well as without depending on official nodes, websites, wallets, etc. On DEX, users are able to in charge of their own private keys and assets all by themselves. Their assets are more safe and secure. Transfers and transactions are all completed on-chain, which is 200% transparent and checkable; and the issuance, transfer, and transaction of tokens do not require review or permission. What’s more, CoinEx DEX provides a great and convenient user experience.
How will CoinEx Chain and DEX help the crypto industry as a whole?
Eddie Jiang: The public chain is the cornerstone of the blockchain industry. CoinEx Chain has the parallelism of multiple dedicated public chains, each of which performs its own functions, by cross-chaining for both high performance and flexibility.
CoinEx Chain is committed to building the next generation of blockchain financial infrastructure. It is a more complete ecosystem built around the DEX public chain. The DEX public chain is a dedicated public chain developed specifically for token issuance and trading and the biggest improvement on trading speed, so it only supports the necessary functions, not smart contracts.
But smart contracts are the foundation for building more complex financial applications. Outside the DEX public chain, CoinEx Chain also includes a Smart Chain that supports smart contracts.
Moreover, as privacy issues on the current blockchain have been criticized, it is one of the core tasks of CoinEx Chain to safeguard users’ privacy. Similar to the Smart Chain, the Privacy Chain specifically supports transaction privacy protection. With cross-chain circulation, it can improve the privacy characteristic of the entire CoinEx Chain ecosystem.
Nowadays, 1.7 million people in the world have no bank accounts; however, among them, two thirds are smartphone users with huge demands for financial services. The public chain will empower DeFi applications’ development and popularization, not only help more companies to seize the huge market opportunity, but also to bring lasting transformations and improvements in people’s lives.
With so many crypto exchanges, what is the future outlook of CoinEx when it comes to the crypto exchange space?
Eddie Jiang: It has been nearly 3 years since CoinEx has been launched, but it’s quite young for an entrepreneurial team. We have seen too many projects’ failures due to governance issues. CoinEx has a very elite team with high technical and management capabilities. In terms of business, CoinEx has gradually developed with diversified business and a complete ecosystem. It’s clear that the market will still grow very fast in the future, and the market size is still very large. We will continue to improve our products, put more efforts in marketing and operations, as well as look for more high-quality projects, to increase the number of users and transactions on the platform. Lay a solid foundation, and I’m sure the time will come for us to shine.
What updates is the CoinEx team most excited for?
Eddie Jiang: We are very excited about the National Expansion Plan which will be launched later this year. It is an important part in CoinEx’s globalization strategy. We will actively explore some new markets while consolidate the original ones. CoinEx will set aside 10 million US dollars to set up a “Pioneer Fund” to support this plan. This fund will be used to support local cryptocurrency projects and promote the development of the local cryptocurrency communities through investment or cooperation. Our goal this year is to invest in projects and communities that are conducive to expanding the CoinEx ecosystem in countries with high development potential.
Original article
Click HERE to register on CoinEx
submitted by CoinExcom to btc [link] [comments]

Reminder: Jews have real life time machines and want me to think that particle accelerators are time machines

Helloooooooo, it's me Satan/the devil again. Thought I would post another reminder about the jews having real life time machines which they have been showing off to me using their "media" (mostly).
Here's the documentary again, which I found on amazon primevideo after already coming to the conclusion that particle accelerators might actually be time machines.
https://www.imdb.com/title/tt0867212/
If particle accelerators are actually time machines, my mother may have actually received a tour of the large hadron collider, because she has been to both France and Switzerland during the same trip and my brother even lives in one of ze countries now. The official reason for her visit was to attend a "patent" conferance. 🤷‍♂️
Dialogue from the Ark Society level of Hitman 2 which mentions "patents" - https://streamable.com/chxs6p
"You see they are sitting on some patents that will knock your socks off."
"Weather control systems."
"Recycling pollution as fuel."
"Cold fusion. You name it."
Satan is naming their time machines too. 🤣
Anyway, she visited one of zose countries again (to visit my brother) and that too without telling me. I told her not to go because of the expensive plane tickets (she has been pretending to be "poor" all these years. well, not THAT poor. "middle class" poor. 🤣). I certainly considered the plane tickets expensive. It cost more than 1 lakh rupees (1,00,000) for a two way trip (which I considered to be a lot at that time). So if I would have gone too, it would have been more than 2 lakh rupees ( rupees are also jewish apparently ). Money that could have been spent on other things (jews have been emailing Satan recently with suggestions like "spend money on experiences, not things". 🤣). Of course, now I think money and the financial system is fake and designed exclusively for Satan but only YOU will know whether that is the case or not. 🤷‍♂️
Oh, and because she was planning on going without telling me, she even agreed to give me some "mummy money" (20,000 rupees) to buy some "pyramid scheme money" (bitcoin) which I then used to buy an antminer s1. Pretty neat pyramid scheme, huh? Has cool miners and everything. 🤣
Anyway because they have time machines, jews not only know what I am "sinking about" right now, but they also know what I will be "sinking about" in the future. 🤣 Check my previous posts and reminders about their mass surveillance tech if you don't know what I am talking about (once again assuming/pretending that everyone in the world doesn't already know who I am and already know about the existence of time machines and other advanced tech). 🤷‍♂️

Moar Satanic Rambling

I mentioned amazon above. They recently VERY actively participated in the "Q psyop" by showing the following riddle to Satan/me in a "riddle quiz" (or whatever you want to call it) that they had in the "fun zone" section of their app. Here's the riddle as I remember it.
"I usually follow Q. But not in QATAR. I come twice in queue. What letter am I?"
I bet they were hoping that I would correctly answer it, but I unintentionally answered it incorrectly as "E". Otherwise it was supposed to be "U". You know, "QU". "Q you". Calling me Q. Q from LGBTQ. 😐
Anyway, I didn't even look at the list of answers properly and had very quickly decided that the answer was "E" because in my mind I imagined the letters going from left to right (in a queue 🤣) and the answer would have been "E" in that case. The letter "E" would have been following "Q". By the way, there is no "E" in any of my real life names but there is one in "JEW". 🤣 Maybe that's why a jewess was pretending to be a bot and other jews were referring to her as EBOT in the Q research 8chan board (mentioned in one of my old posts). They were spelling "ABOT" as "EBOT". 🤣🤷‍♂️
I am also guessing that "QATAR" in the above riddle is supposed to mean something since it was in all caps. "Q a rat" maybe (country names are fake apparently, as I mentioned in my previous post)? Like the rat from the movie Ratatouille? 🤣 Even my mother was once mispronouncing Qatar as "Quatar", and I corrected her saying it's QAtar and not QUatar. But yes, once again, "QU" or "QUA" (Q you, A). 😐 Like I mentioned in my previous post, I now believe she is also a "psyop" participant and she continues to actively participate in the psyop.
Just recently she threw away a pack of masala powder just to make me angry. I had already started cooking when I realized that the pack was missing. At first I thought she may have just hidden it, so I searched everywhere but when I couldn't find it I realized she had mostly likely thrown it away. I am not talking to her at all right now (for obvious reasons 😐) but did manage to indicate that I was angry because of the missing masala powder (not that she didn't already know. it was part of the "plan". trust the plan. 🤣) and she eventually admitted that she had thrown it away, apparently because the pack was "completely open". There were long expired packs of various masala powders lying around (still are) that were actually "completely open" that she didn't bother to throw out but she threw away a brand new pack that I had bought. 🤷‍♂️
Should also mention that everytime I brought up the "psyop", her dialogue was something like, "Internet people are tricksing you-internet people are tricksing you". 🤣🤷‍♂️ "Internet people" are "tricksing" me apparently. 🤣 Well, I am translating but she was using the word "tricks". 🤷‍♂️
I believe I have also figured out what one of my real life names actually means. One is supposed to be calling me an "objectophile" (like "QU". "Objectophile U".) and the other one (the one in my birth certificate, ID cards, etc.) is supposed to mean something like "You are a fool/simpleton, devil". Any jew here willing to confirm? 🤣
Anyway, as jews already know, I think it's okay to be a fool/simpletion but not okay to be evil. Who goes to hell? A fool/simpleton or someone who is evil? <- "Q" style questions. 🤣
As I mentioned in my previous posts, I believe ALL jews are evil. Especially if all of them indeed know who I am and have been watching me all these years. 😐 Someone was even posting on 8chan saying something like, "we are not evil. promise...". Watch a compilation of everything you have done to Satan all these years if in doubt about the fact that you are evil. I am assuming you have recordings. Or did the jewesses who run the jew world delete them from the face of the Earth and are now claiming that some of the things that I have been "sinking" about never happened?
Other than that they have continued to do shit like male genital mutilation and abortions despite having time machines and knowing in advance that Satan will be anti-male genital mutilation and anti-abortion. Assuming that abortion is real of course. I haven't seen it with my own eyes after all (just like my mother says that she DOES NOT believe that god exists just because she hasn't seen god with her own eyes. heard the same thing from others. 🤣). I even remember someone posting pro-abortion shit in the 8chan Q research board. Something along the lines of "if you want to buy a gun, do it. your choice, pro-choice...". How about "if you want to do the apocalypse, do it. your choice pro-choice", hmmm? Besides, jewesses who have had abortions could have "chosen" to not have sex. If abortions are real, I am guessing there are many jewesses out there who have had abortions by the time they were 30.
Satan is 30 years old in his current human form and is a virgin. 🤣 Even the "Virgin" brand is referring to Satan. Yes? Also figured out recently that the "Coca Cola" brand is referring to Satan also. Bought an "(allocacoc)[https://www.allocacoc.com] powercube" and found the name odd initially but realized that it was Coca Cola spelled backwards with an extra "L" and knew it was supposed to mean something. Later saw one of those "coke and mentos" videos on youtube again and finally realized what it is supposed to mean. "Coca Cola" is supposed to be "A Cola Coc". "Cola" is supposed to be "কলা". It's supposed to be referring to Satan's dick. That's why there were those "muh dick-muh dick-muh dick" posts on the 8chan Q research board. Yes? 😐
Anyway, if the "Coca Cola" brand was indeed established in the year stated in wikipedia then it would seem that the jews have had time machines for the past 100 years at least.
I have also realized that "muh dick" is also partially mutilated and my mother lied to me about that also. Claimed to have taken me to the nurse because she noticed "pus" was coming out of my dick and the nurse did some "cutting". Said that there would have been "कष्ट" after marriage otherwise. Had no idea at the time what she was talking about, but perhaps she meant that a lesbian jewess might have found my unmutilated dick "ugly"? 🤣 Watch that "Nip/Tuck" episode#Episodes) and that "South Park" episode defending male genital mutilation if you have no idea what I am talking about.
What if jews force their senior citizen parents to get a face lift, nose job, liposuction, or whatever without anaesthesia? And say shit like "we are only doing it to make you look beautiful so that you don't have any "कष्ट" if you decide to get married/remarried or so that you are invited to more lemon parties"? 🤣 They can use their mind control tech to wipe the memory of the surgery afterwards if necessary (or use roofies if they are real 🤣). Can even invite people to witness the surgery and they can say "mazel tov", "oy vey", or whatever it is they say after a "bris".
Now, I don't know if "brises" are real because I haven't seen one with my own eyes. I have however seen a "fully mutilated" dick when I was a kid (3rd grade). It was in the school (a different school, not the one I mentioned in my previous post) bathroom which was just a "shed" with a drain in it (was the female bathroom also just a shed with a drain in it? There was even a South Park episode about school bathrooms but in their case the bathroom wasn't just a "shed" now, was it? 🤣). Anyway, I assumed that I had seen a catheter "wrapped" around his dick as I had heard about catheters by then but did not know what they looked like or how they worked. I asked the kid why his dick looked different assuming that he would confirm my theory that he was peeing using a catheter. But he replied saying that it's because he is "muslim". It was an odd explanation I thought, and even asked my mother that day and she didn't bother to explain it either.
Even after that incident I didn't know about "male genital mutilation" for years. But eventually "real time" told me. But even then I didn't know that even my dick was partially mutilated but "real time" has now told me about that too. 🤷‍♂️
Well, jews were also posting a "render" (I think) of an unmutilated dick on 8chan and someone on voat replied to a comment of mine saying something like "No one actually knows what an unmutilated dick looks like" which I only recently saw. Could have just said something like, "Your dick is mutilated too, Satan" but whatever. 🤷‍♂️

Video games

Already mentioned a video game above, but will be mentioning moar video games here under this heading. As I mentioned in my previous post, they are also using their time machines when making video games. I also mentioneded that I could be living in a simulation for all I know and you could all be NPCs. Later I remembered a video game that I didn't play just because the story/plot had "simulation" in it. I then checked out the plot again on wikipedia and noticed that it mentions "time travel" also. 🤣
https://en.wikipedia.org/wiki/Saints_Row_IV
The game's loyalty missions impact the ending of the story: if a number of these are not completed, the Boss makes plans for the Saints to take over more planets and expand their new empire; however, if all are completed, the Saints learn that they can restore Earth using time-travel, discovering that Zinyak captured several historical figures and placed them in suspended animation. The Boss soon discovers one of them to be 19th century writer Jane Austen, whom they are a fan of, and who reveals herself as the narrator of the game's story once she is awaken her from stasis.
There's also the following DLC where Satan is mentioned. 🤣
https://en.wikipedia.org/wiki/Saints_Row:_Gat_out_of_Hell
I have both the game and the DLC in my Steam library but have never played them. I bought them during a sale or something. They were being sold as a bundle (Humble Bundle maybe) but I was only interested in Saints Row The Third.
I should also mention The Witcher 3: Wild Hunt. The game has some cannibal witches who eat kids (they ate grown ups too; they didn't discriminate. 🤣). And the witches were shown to possess "mass surveillance" capabilities, but they were using magic. They would nail human ears to trees or something. Satan chose to free that tree spirit the first time he played that mission but later noticed the tree spirit did not get rid of those "ladies" for some reason. Plot hole?
Anyway, I read right here on /conspiracy that jews apparently eat aborted babies. It was the "Robert David Steele AMA" I believe.
Were you jews hoping to tell me that you don't really eat aborted babies and I only believed it because I am gullible? There was even a South Park episode recently where there was the dialogue "well, we don't eat them...", but they were talking about cows. Were they actually talking about aborted babies? There was also the dialogue "...nobody wants to do it...". Nobody wants to do abortions but do them anyway because jewesses auto-magically get pregnant (like Satan used to think when he was a kid)? Also, there is a dialogue in a "Penny Dreadful") episode where a witch who does abortions and is called a "cut-wife" says something like "this village needs its cut-wife...". Why did the village need a "cut-wife"? Because the jewesses living there were auto-magically getting pregnant even though they didn't have sex? 🤔
Unforuntately for the jewesses who run the jew world (who are no doubt like those "ladies" of the wood), there are also stories like (Hansel and Gretel)[https://en.wikipedia.org/wiki/Hansel_and_Gretel]. Even my own mother used to try and scare me when I was a kid saying things like "juju buris (বুড়ি) kidnap kids in burlap sacks..." or something. 🤷‍♂️

TV Shows

Already mentioned TV Shows above, but will mention more here.
I recently remembered the cartoon "Pinky and the Brain" and realized they are also supposed to be depicting Satan. Check out the opening theme and the lyrics - https://www.youtube.com/watch?v=qzZmU0aGmcc
They even show Saturn crashing into Earth during the part where they sing "by the dawning of the sun, they will take over the world". 🤣 There's also "to prove their mousey worth, they will overthrow the earth...". 🤣 Satan is dinky apparently. 🤷‍♂️
At the end of the opening theme there is even the name of an openly-jew jew mentioned ("Steven Spielberg"). If you are a "poor" jew who doesn't know about the existence of time machines and other advanced tech that "rich" jews have, maybe you can ask him what he knows.🤷‍♂️
Also mentioned in my previous posts that I am also supposed to be Jesus and there is this scene from an episode of The Simpsons - https://streamable.com/oumsad
The scene was actually censored when airing on a local TV channel and I even mentioned it to a desi jewess who was "sent" to chat with me. Looking at "muh chatlogs" is how I remembered that scene. 🤣
The jewess was trying to pretend to be psychic or something. She was even telling me about my future which I had totally forgotten about. I did remember that she asked me if I believe in "astral projection". I said no, so she dropped the subject. Otherwise I am guessing she would have claimed to be able to see me using "astral projection" and not because all jews are watching me like Truman from The Truman Show.
I also remember another jewess who was "sent" to chat with me and she was asking me if I had read Harry Potter and knew what a "prophecy" was. When I said yes and used "भविष्यवाणी " to define "prophecy" she dropped the subject. 🤣 She was claiming to be studying to be a psycho-logist and was repeatedly asking me "How do you feel-How do you feel". 🤣 I had no idea what she meant at the time, but now I know (thanks to "real time") that it's just something that psycho-logists say. 🤣 No doubt that was the first thing she learnt at "psycho-logy school". 🤣 Satan is a psycho apparently. 🤣🤷‍♂️
Oh yes, I was talking about The Simpsons. I remember seeing posts right here on /conspiracy speculating whether The Simpsons creators know about the existence of real life time machines because many episodes seem to depict future events. Well, no need to speculate any longer, they do have real life time machines. But it's not just The Simpsons creators. It's all jews. Be it Hollywood, Bollywood, Tollywood, etc. Maybe you can even ask them during comic-con or something if you are a "poor" jew and do not know about the existence of real life time machines.
I now also believe that the boat painting in The Simpsons living room is based on something that Satan painted not long after the shit stick incident. After the shit stick incident that I mentioned in my previous post, my mother agreed to reconnect our TV cable connection on the condition that I attend a religious summer school. That's where I painted a ship which was supposed to be like the ships from Assassins Creed Black Flag. It was supposed to be an art "class" but there was only one and they were like "paint whatever you want to paint". Were they expecting Satan to paint something Satanic? 🤣 I remember the kid next to me was painting an alien. Large sheet of paper but he was painting a small alien in the middle of it leaving the rest of the sheet blank. 🤷‍♂️
Anyway, in case of The Simpsons, the painting is that of "a boat" (wink-wink-nudge-nudge?) but it's very similar to the ship painting that I painted. If you really do not know about the existence of time machines and other advanced tech maybe you can even ask the creators of The Simpsons (in the next comic con or something). You can say something like "a conspiracy nut on /conspiracy claiming to be Satan was also claiming that you have real life time machines and the boat painting is based on something he painted at a religious summer school after a shit stick incident and that you got rid of the Apu character because he wanted The Simpsons cancelled because he got the impression that you were being anti-Trump and pro-Hillary...". 🤣🤷‍♂️
Anyway, there was even a kid at the above mentioned summer school who was pronouncing "cheat codes" incorrectly. He was pronouncing "cheat" as "kheat". Was he acting like the actors from Truman Show and reading his lines from an "eyephone" teleprompter? Or was it intentional? 🤷‍♂️ By the way, the downstairs neighbours' kids were also there in that summer school and they would have at least heard the shit stick incident. Yes? I believe they also knew about the "psyop" and could have told Satan but didn't. How are you jews trained to participate in the "psyop" anyway? Are you sen't to special "psyop schools"? 🤣🤷‍♂️
In one of my previous posts that was deleted by a mod, a jew had commented asking me whether I was a little girl because I had used so many "emojis", so let me mention the cartoon "The Grimm Adventures of Billy and Mandy" also. All three of the main characters are also supposed to be depicting Satan, including Mandy. Check out her devil horns like hairstyle. 🤣
There is also this song from the show. https://www.youtube.com/watch?v=yui4zkZQwCA
It has the lyrics "if at first they think it's strange, they wont think twice once I've eaten their brains".
Jews thought that if Satan thinks all the evil shit they do is "strange", Satan wont think twice after they manage to figuratively eat his brain? They were also posting this image on 8chan. Yes, Satan has been "fucked by psyops" because physical wounds heal apparently. Not that jews haven't caused physical wounds also but they always end up healing. 🤣

Movies

Scene from the movie "My Favorite Martian" referring to Satan's zipper incident - https://streamable.com/n3e30i
Was four or five years old when it happened. The zipper of the shorts that I was wearing, got stuck on my partially mutilated foreskin. I was crying in pain even though there was no bleeding. Jews most likely have a recording of this incident also (if they haven't deleted). Later the same nurse who most likely mutilated my dick was telling me to wear underpants as if I could conjure them out of thin air.
I didn't wear underpants back then and didn't even for years after that incident. Now I wear "square" underpants, which is why there is "Spongebob Squarepants" (I am also supposed to be Patrick). 🤣
Anyway, jews know about the zipper incident too but are continuing to perform male genital mutilations anyway. Yes? Perhaps they are like, "another benefit of having a fully mutilated dick is that you don't have to worry about zipper issues". 🤣🤷‍♂️

Music

Jews are using their time machines even in the music they produce.
My motorcycle that I mentioned in my previous post was seized by the cops (I used to think that the local cops are useless but now I think that they are just fake) using "Coronavirus" as an excuse. And when recently looking at the details of the "Foghat" album "The Best of Foghat", I noticed the song with the title "Third Time Lucky (First Time I Was A Fool)". I have been to the cops twice to get back my seized motorcycle. First time I went was on April 1 (april fools day). I was planning on not going a third time and just let the fake cops keep my motorcycle. After all, they are jews, the motorcycle was made by jews and even the money I used to buy the motorcycle was "jew money". And I noticed that there is also the song with the title "Take It Or Leave It". 🤣 Oh, and now I see that there is also one with the title "Easy Money". 🤣
The name "Foghat" itself is most likely referring to how Satan's helmet gets foggy sometimes. Yes? 🤔🤷‍♂️
Anyway, wasn't able to pass much time with the bike anyway. It was only making me spend fake jew money on fake expensive fuel. Not to mention the trips to the service center. It needs servicing every three months apparently. So, I am thinking I will leave it with the fake cops. What do you jews think? Is it a good plan? Trust the plan? 🤔
Oh yes, the second time when I went to the cops, they gave me a phone number and asked me to call it (I didn't) and also gave me a fake name when I asked for one. Which I now think is supposed to mean "You are Satan, pal", kinda like that South Park episode about mormonism ("moronism"; Satan is a moron apparently; Amaron) where Cartman was like "My name is Yura, Yura Fag". 🤣 If yes, then here is a message for the fake cop who gave Satan the fake name, "Satan is not your pal, gal". 🤣
Yes, the second time the fake male cops were gone and there were only two jewesses. The male cops are in "isolation" apparently. 🤣 I was wondering if I should have shown them that clip from The Simpsons where Chief Wiggum says something like, "look at my badge. cash bribes only..." because most of them are fat or chubby. And because I used to think that all the local cops were good for was scaring and threatening people and asking for bribes. 🤣 The second time there was only one male cop (a gatekeeper or something, who got brave and was rude to Satan) and this time they made sure that it was not a fat one. 🤣 Anyway, I can make fun of the fake fat cops (many of whom have "pregnant" bellies. men and women are equal so men are also able to get pregnant. those cops were actually pregnant. yes? 🤣) just by "sinking" about it. How cool is that? 🤣
I also remember that South Park episode now where they were calling bikers "fags"). Original air date is 2009 whereas Satan bought his bike in 2019. So yes, you can ask them about the existence of real life time machines and other advanced tech also. 🤷‍♂️
Recently Satan has been passing the time "code monkeying". That's why the 8chan administrator is called "code monkey", yes? I have been playing with "CodeIgniter" and there is "psyopy" content even in the "CodeIgniter" documentation.
use CodeIgniter\Controller;
class Helloworld extends Controller { public function index() { echo 'Hello World!'; }
public function comment() { echo 'I am not flat!'; } }
Yeah, the world is not flat apparently but since I haven't seen it with my own eyes I probably should not believe that it's round. Yes? 🤣🤷‍♂️
Well it doesn't really matter if the world is round or "flat". What matters is that if everyone in the world knows me then unfortunately for you, you are all evil. And it's actually more unfortunate for you if you are not NPCs. You know what I am sayin'?
By the way, is Satan's "Mann ki Baat" being broadcast to everyone in the world uncensored or should he write down more of his "mann ki baat"? 🤔 Like how he has been "sinking" to Ubisoft whether the "apocalypse" comes under "everything is permitted". Feel free to comment here with your reply Ubisoft.
Mind-wiped Satan now thinks total apocalypse (get it? total apocalypse. kinda like total eclipse but apocalypse instead of eclipse) is necessary and since he is addicted to TV shows, movies, video games and the internet apparently (all jew media), it would be the unselfish thing to do (assuming it's up to him to do the apocalypse). Yes?
Satan has been trying to be "sober" though. No TV shows, movies or video games for the past two months. Did not renew his 100mbps internet connection either. Let's see how long the lockdown can continue. 🤣🤷‍♂️
It's Saturday and Satan managed to spend hours writing the above post. 🤣
submitted by rcspy to conspiracy [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]

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]

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]

How To Build a Cryptocurrency GPU Mining Rig that is Upgradeable (1070 TI) Does 2 Years of Mining Ruin A Graphics Card? - YouTube BITCOIN Mining Power usage using reference ATI 5870 at Stock and OC settings Server mining! Mine bitcoin fast with your smartphone! The Honeyminer, Good To Get Started With Bitcoin Mining on ...

Liquid cooling system cpu tube design for your computer desktop. COOLING CPU There are 3 products. View: Grid; List; Sort by. Compare (0) Showing 1 - 3 of 3 items. $22 . Computer water cooling liquid super-bright... Icecrown ice crown computer water cooling liquid super-bright second generation liquid water capacity 500M. $22 . Add to cart More. Add to Compare. $30 . CPU micro pass water ... Our Quick BTC Miner 2020 is working on Windows 7, 8, 8.1,10 and have an easy to use design and best protection system. Our ... As we know nowadays bitcoin mining not possible from home, you can’t compete for large bitcoin mining farms. Quick BTC Miner has the latest ASIC mining rig, it will help you to mine BTC at a faster rate and instant withdrawal. Quick BTC Miner cloud mining gives the ... Follow the steps below and you can become a Bitcoin miner yourself. If you don’t want to, that’s fine, too — learning how to mine Bitcoin still helps you to gain a better understanding of the process of mining itself. Get the Bitcoin Mining Hardware. The first step to start Bitcoin mining is to purchase the mining hardware. Selecting the ... GeForce GTX 1070 Ti Graphics Card STRIX-GTX1070TI-A4G-GAMING 8GB 256-Bit GDDR5 PCI Express 3.0 HDCP Ready Card For reference, a single ASIC miner has the equivalent mining power of 700 GPUs. Therefor, the massive move of miners toward ASIC hardware is easily understandable. Clear evidence of this is the Bitcoin network total hashrate, which has exceeded the incredible milestone of 120 exahash per second (that’s 120,000,000,000,000,000,000 hash calculations per second!). Image courtesy of blockchain ...

[index] [4313] [20539] [5237] [19782] [48831] [47100] [27473] [45545] [49879] [37374]

How To Build a Cryptocurrency GPU Mining Rig that is Upgradeable (1070 TI)

Create your own website today: https://www.wix.com/go/ufdtech Buy Cards for Mining if you wanna: https://amzn.to/2K5qm0P Some Sources: Bitcoin Pricing:... The backbone of Cryptocurrency (Bitcoin, Ethereum, ZCash, ZenCash) is cryptocurrency mining. The best way to become miner is to build your own GPU mining rig. Today Vosk of VoskCoin reviews how to ... I'm Jepito In Kentucky and I'd like to share my video of my new BitCoin Mining rigs.. after see-n pictures & videos i decided to rethink my design + cheeper and cooler is better I started at the ... a compilation of cool and creative cryptocurrency mining rigs Sources: 12 Graphics Card's All In One Rig And Air Filtered! Part 5 / 6 Cards Up and Mining Zcash by TheBitcoinMiner https://youtu.be ... Please use my reference code! BIFWWPMV you get 0.005 btc if using and here is the link for downloading server miner :https://play.google.com/store/apps/detai...

#