Some Bitcoin thoughts. Bitcoin as a payments platform by ...

[Article] O V E R D A R K

So I'm looking through my old yearbooks, and I'm realizing that I missed out on a crucial part of my life: during high school, I was supposed to have a punk phase. I can't believe I missed it! It seemed like everyone was rocking their unruly hair, their unkempt clothes, and their general disaffection towards life. Man, Green Day released new records, and there was an unrelenting hatred for all types of authority figures...
Wait, this is just a slab of concrete with newspaper articles from 2020 stapled to it, isn't it.
Regardless, the universe is telling me it's time for me to reclaim my lost childhood experiences; to go back to a better time. Unfortunately, latent legal issues surrounding my controversial "BONG HiTS 4 JESUS" sign prevent me from going within 500 feet of any type of school, so winning the basketball championship and visiting the aquarium are right out. But I can still be the moodiest, edgiest, darkest person on the planet, and now that I've beaten Shadow the Hedgehog all the way through and went to Hot Topic, it's time to build a commander deck that's truly me. Presenting: RAMSES O V E R D A R K!
[[Ramses Overdark]] {2}{U}{U}{B}{B} Legendary Creature — Human Assassin {T}: Destroy target enchanted creature. 4/3 
Ramses is the bad boy your mother would never let take you to IHOP. Not that he'd care; his business is killing, and he's efficient at it too, costing the least out of any commander I've ever written about. You want to sit around and drink tea with your little enchanted princess friends? Ramses Overdark is here to tell you how the real world works. Nothing personnel, kid.

Commander For You

Like a TI-83 Silver Edition, Ramses is a stone-cold calculating problem solver, but he only gets that way with some preparation. See, killing is a business, Ramses' business, and the one thing every business needs is synergy. So call me Nathan Fielder, because I'm going to unveil the plan that will keep this enterprise running smoothly:

Half Up-Front

As a teenager, I procrastinated from my task of being edgy by protesting government-backed financial institutions with the Bitcoin community, and one thing you learn there very quickly is that assassination ain't cheap.
The first and most obvious barrier to breaking 18 U.S. Code § 1117 is his six mana casting cost, and unlike Gabriel, Ramses demands something a little more tangible than a green thumb to appease him. We're going to use the usual fare: rings, trinkets, stones, lockets, relics... archives... spheres? With you as an investor, Ramses' business (which is killing) will make a killing, letting us take full advantage of Revel in Riches as both a ramp tool and backup win condition.
Ramses will also often require additional gas to keep going, whether it be finding a steady stream of enchantments to throw onto enemies, or to finding ways to close out games.

Murder, Inc.

Enchantment payoffs are few and far between in Dimir, so we're keeping this build a bit creature-light; but the ones we take with are absolutely vital for our success. While Ramses is no Cleopatra, he's still managed to form relationships with some important Greek allies:

Poaching Employees

Our deck only runs sixteen creatures, and while being a lone-wolf is edgy, it's not the type of edge I want to be. I feel like I'm a Halloween bobbing apple -- razor edgy; the type of edge that speaks to people, in the very depths of their soul, and causes them to rebel against the man. In the end, I will be so edgy that even those rotten adults will realize I'm right.
Enchant opposing creatures with reanimation-on-death enchantments:
Once opposing creatures are enchanted with one of these Auras, they become juicy targets for Ramses, as killing them will put them into play under your control. Unfortunately, six isn't a critical mass for Ramses; to ensure that Ramses' business isn't killed by a lack of clientele, let's use some recursive enchantments.
Rounding out the auras, we've got a few utility spells we can play for neat effects:
A lot of creatures are going to end up dead, which makes Rise of the Dark Realms a great end-game finisher. But that's boring. Are you ready to learn Ramses' true dark secret? Because here's where I blow your mind.

Drake in the 99 Non-Dragons

Your real win condition is some random uncommon from Urza's Saga.
That makes no sense.
It makes total sense. You start by playing Iridescent Drake, so...
This combo will make you feel like Joker, because your opponents will never see it coming.
You've got some redundancy in the deck in case things don't pan out: use Fallen Ideal as your sacrifice outlet and win condition to swing with an evasive infinity/infinity attacker, or deal damage using Grim Guardian's Constellation trigger. Should Iridescent Drake be interacted with (which is illegal, by the way), use Ill Gotten Gains to get your combo pieces back to hand and recur some protective counterspells.
I'm not a punk, I'm a goddamn dragon genius. Finally, the deck is truly me!

Conclusion

In conclusion, the Ramses Overdark deck for the Commander format is a fun and powerful budget deck for you to try. I hope you enjoyed reading my paper as much as I enjoyed writing-
...Buh?
Oh. I guess I reverted to hastily written high school paper writing. Is that really what I sounded like?
You know, people say you never really realize what you have until it's gone. It's easy to look to memories of better days and feel that melancholy drop in your stomach. It's natural to feel wistful for a time past when rain drips down the window. But the truth is also that you don't really realize what you don't have until you obtain it. Our experiences may be painful now, but that's no reason to give up hope. You can get over darkness. Look forward instead of back, because in that future lies a wiser you.

The Hit-List

https://scryfall.com/@michael_celani/decks/1985f0a7-552f-4b9d-a5cc-9593e5f0da04
submitted by Gamesfreak13563 to EDH [link] [comments]

Bitcoin's next 15 years : Year 2020–2035

2020 4Q

~ More companies follow in Microstrategy’s footsteps. Rumors of more corporate treasurers investing in BTC in boardrooms globally. A few listed large corporates announce accumulation of BTC after their buddies have all bought in (Board members, C-suite executives, family, and friends, etc.)
~ Money printing does not stop as the deflationary force of technology is too severe; the new US government formed after Biden’s win begins to adopt MMT as its primary guidance of future economic theory, led by Steph Kelton.
~ The holiday season and strong seasonality pump BTC back to $20k for the first time. Hard rejection and price fall back to $14k.

2021

~ BTC finally breaks $20k after multiple retests of overhead resistance sometime in spring
~ Almost weekly we see another corporation announcing vested interest in BTC
~ No longer in doubt that the asset class is in a bull market. Macro funds pile in. By year-end, we’re at $55k. Newspaper reports Bitcoin has now broken the $1 trillion mark. Most institutions begin scrambling to understand the asset class and set up “Digital Asset Investment teams”
~ Retail money flows to altcoins; Bitcoin is becoming too expensive for “retail” investors. The bitcoin community discusses possibly denoting BTC as sats, but majority of exchanges not interested as they derive most income from alt flows. However, most Bitcoin-only platforms switch to sats as the primary display format led by bitcoiners who now have considerable wealth and influence
~ Increasing talk that some smaller nations are now discussing the prospect of including Bitcoin on their central bank balance sheet
~ The first BTC-denominated corporate bond is launched

2022

~ Those in power have established full BTC positions, and we begin to see subtle clues that some countries are possibly accumulating BTC
~ Private banks selling BTC structured products now out in full force; custody solutions are now institutional-grade. 50% of the world’s banks have some product/solution tailored around bitcoin. The other 50% scramble.
~ Marks the top as BTC momentarily exceeds the most valuable company by market cap (~$2.5 trillion in 2022 @ $130K price). The final days of the frenzy are filled with rumors that central banks have accumulated 10% of global supply, and that it may even form part of the IMF’s global recognized reserve currencies. Crypto Twitter reaches peak “I told you so”

2023

~ The next bear market isn’t as severe as the last few; as the digital asset teams of various institutions are accumulating up to 2-5% of their AuM. It’s now commonly accepted that this asset class is here to stay and that even deploying $10 billion is no longer an issue in an asset class worth an aggregate $5 trillion.
~ BTC finds a floor 60% lower at $50K as smart money accumulates. CT screams for a 80% correction because mUh bItCoIn cYcLeS aNd fRaCtAls
~ Investment banks now have full-fledged research teams dedicated to digital assets. Calls for 80% correction too, so the smart money front-runs.
~ The middle class latches on to the wholecoining meme. “1 Bitcoin to secure a retirement; stack those sats”
~ The wealthy who are now increasingly composed of inherited wealth begin selling real estate/equities/bonds for Bitcoin but holds their BTC with their private bank. Realizing that Bitcoin supply is truly limited and sensing the “1 bitcoin to retire” meme; and that not every millionaire can own 1 bitcoin, many of the rich/ultra-rich scramble to buy 5–100 BTC each if only to cement their status as rich. 5–100 BTC costs $500K-10M (at $100k per BTC)
~ The winning product of the year is an automatic savings plan in bitcoin.

2025

~ Bitcoin is back to trading near its all-time highs of $130K after the 2024 halving cycle, however, the effect is marginal but the markets wrongly attribute it to the halving supply squeeze, building a false narrative for the next cycle in 2028.
~ Institutional money now in full-play; on hindsight we’ll realize the 10-year steady bull-run has actually begun since last year in 2023, similar to the gold bull run from 2000 to 2011
~ More exchanges finally denominate BTC in sats. $100K BTC = 0.1 cent per sat. Logging into platform displays your stack as:
“11.7m satoshis ≈ $17,500”

2028

~ Retail attempts to trade around the 2028 halving cycle. The halving cycle no longer have much of an impact, as demand now far outstrips supply changes
~ Many earlycoiners now sell between $200–400K, only to see it continue its relentless climb at a 30% annual rate
~ The first central bank announces the official addition to their balance sheets; all other central bank begins to FOMO. Cements BTC as a global reserve asset.
~ Governments ask that private ownership of bitcoin be transferred to regulated financial institutions such as their local bank where it will be held under custody. 70% of people do so.

2033

~ Many of the early-coiners now buyback at near to $1M ($20 trillion market cap), finally equaling gold’s market cap at a price of $4000+
~ Bitcoin peaks and meanders under $1M for the next decade
~ Volatility is now <10% per year, merchants begin adopting it en-masse as a medium of exchange

2035

~ 5 years of price stability leads to some merchants re-pricing certain goods in sat-terms
~ The lightning network crosses a billion channels created
~ Fiat does not go away, but most G20 countries decide to ban bitcoin as a medium of exchange for economic transactions. Ownership of bitcoin as an asset is encouraged as a store of wealth; private ownership is frowned upon and in some cases made illegal.
submitted by laobuggier to CryptoCurrency [link] [comments]

[ Bitcoin ] Bitcoin legality in India – Is Bitcoin Legal ?

[ 🔴 DELETED 🔴 ] Topic originally posted in Bitcoin by x23_shivam [link]
Bitcoin has been a heavy financial blow to the trading world since it rose to significance. The flickering uncertainty of the traditional economy, entirely controlled by the government has caused several disastrous events in the past. But Bitcoin or any other cryptocurrencies in the world are completely free from government and political influence, which don’t lose its value over a political takeover.
India has also witnessed the rise of cryptocurrencies like Bitcoin in some events. You may remember the demonetization and the aftermath of it. Here in India, we saw a spike of Bitcoin users around that time but the sudden ban imposed by the RBI made it all gone. Now that after two years the Supreme Court has overruled the decision of RBI, the Indian cryptocurrency market is slowly rising from ashes.
But the question remains, about Bitcoin legality in India if legal then does it have a framework and regulations passed by the Government?
Before we find answers to these questions, let’s look back at the beginning.

The Beginning

Started in 2009, Bitcoin first rose to global significance in the year 2017. It was the first time for bitcoin to cross the $1000 mark but it didn’t stop there.
Then came a blow from the Chinese government when the People’s Bank of China decided to tighten its grip on the cryptocurrency market. As a result, the graph went down by 30%, however, it successfully maintained its steady growth. Around May, it had jumped well over $2000.
It was December 17, the Crypto exchange recorded its highest value of all time as the Bitcoin value was standing on the number $19,783.21.
But the market subsequently came down and nowadays it roams around the $10,000 mark.

India Banned Cryptocurrency in 2018

Surprisingly when the world was facing a crypto bull market race, Indian backed down from the idea and the Reserve Bank of India imposed a de facto ban on the trading of crypto.
The RBI assessed that there were multiple risks involved in dealing with crypto and should be immediately banned to trade it. As a result, the huge market that was yet to understand its potential was dismissed.
Many people and respective associations spoke against it and the Internet & Mobile Association of India went to the Supreme Court against the RBI’s decision.
At that point, India had around 5 million cryptocurrency users, who were actively trading and using Bitcoin as a currency. But all of a sudden it all shut down, as the users were left with the option to either hold on to their Bitcoin savings or trade through the foreign.
But since Supreme Court took the matter in hand the situation began to change. Unlike RBI, SC had a wider view on the matter and asked about the reasons of the Bitcoin trade ban.
While there wasn’t any satisfactory answers from the RBI, the Supreme Court lifted the ban on the use of Cryptocurrencies like Bitcoin in 2020.
It seems like, with the ban lifted, India is currently free to deal or trade in Bitcoins without any barriers. But it isn’t that easy.

Bitcoin legality in India


https://preview.redd.it/t5bxt1cnlgl51.png?width=1200&format=png&auto=webp&s=6b4d014c65e4a8bb3e787531b7654eb37d736994

Now having covered all the backstories, let’s take a look at the main question of this article.

Can you trade bitcoins now?

The answer is- Yes. Trading or dealing with bitcoins or any other cryptocurrency like Ethereum is legal in India. You can trade, buy, and sell bitcoins from domestic or foreign exchanges and even invest in them.

Startups like WazirX, Lastbit, Zebpay, and international companies like Paxful are providing platforms to market crypto as the optional currency. CEOs of these companies are hopeful for the near future as India is counted among the five countries to have the most Bitcoin users.
But there are some problems yet unresolved.
Crypto Mining. Though the SC lifted the ban from crypto trading, crypto mining is still impossible in India. Mining is a work that requires specific technologies and a high supply of electricity. While the latter is a problem in India, the former is the bigger challenge. Because the machine to mine bitcoins, ASIC is still illegal to import.
ASIC standing for application-specific integrated circuit is the most advanced technology to mine bitcoin profitably. When the crypto was banned, importing ASIC was also banned. So, now the miners are left with nothing useful other than GPU technology to mine. While GPU was useful 10 years ago, today it simply doesn’t work.
It’s also unlikely to manufacture ASIC in India, because it only works for the purpose of crypto mining only. As long as there’s no stable market here, manufacturers wouldn’t take the risk to produce it here.
So, the conclusion on Bitcoin legality in India can be to trade crypto but not mine it. We think it’s still a fair opportunity to get the Indian crypto market a bit more stability and then the government might reconsider their stand on crypto mining.
Source - How To Buy Bitcoin in India
x23_shivam your post has been copied because one or more comments in this topic have been removed. This copy will preserve unmoderated topic. If you would like to opt-out, please send a message using [this link].
submitted by anticensor_bot to u/anticensor_bot [link] [comments]

Online gambling legislation and regulation. Starting your own gambling product.

Online gambling legislation and regulation. Starting your own gambling product.

Mobile gambling
If you plan to develop an app with the ability to deposit and withdraw real money, then such a product automatically falls into the category of gambling and you will need to license your business for successful operation.
Mobile and Web Based Apps
So let’s talk about the different kinds of online gambling apps available on web and mobile. We’ll be covering both free-play gaming apps and real money casino app games you can find for iOS, Android devices and web browsers.
Mobile gambling is more common for poker, casino, bingo, and skill games. They have advantages in terms of a low barrier to enter the market, instant liquidity, product knowledge, and marketing expertise, minimal infrastructure costs, and the ability to bring a brand to the market quickly. Consequently, this form of gambling does not sit neatly with jurisdictional boundaries. Multiple gambling opportunities are available, including betting on various events and markets, in a relatively simple format. Gambling products can also be integrated into betting on television shows or virtual racing and sports games as well as offering lotteries, bingo, poker and casino games.
Most Popular Gambling Apps
Sports betting, casino, poker and lotteries are the most popular forms of online gambling. However, other forms are available too. These include the following: Bingo, slot machines, different card games, roulette and other game of chance. One of the best things about online gambling and betting apps is the number of choices you have.

Sports Betting

Betting means making or accepting a bet on the outcome of a race, competition, or other event or process, the likelihood of anything occurring or not occurring, or whether anything is or is not true. Today most sports betting is done via mobile-friendly sites and apps.
Today most sports betting is done via mobile-friendly sites and apps.
The introduction of live betting for sports like soccer and tennis means that bettors who are sitting inside stadiums watching games can now pick up their mobile devices and find real-time betting value with the best sports gambling apps. This has really unlocked a door to the future of sports gambling and the popularity of online gambling apps.

Poker

Many sites offer free poker, where no real money is wagered, although in some cases players can accumulate credits that can be exchanged for prizes. This is the case why people are going to play for real money. There is an ongoing debate over whether poker should be classified as a game of chance or skill. The parameters of legal poker playing are still unclear and differ between jurisdictions. Since you are not gambling with money, I’m pretty sure under the law it’s just a video game for now.

Blackjack

Blackjack is the game of choice to many high-rollers and do you know why? Because blackjack is a challenging, logic and skill-based game where your thinking, strategy, and calculations determine the outcome of the game.

Bingo

Bingo is one of the most popular and socially accepted games in the world. Bingo is a traditional form of gambling that has seen considerable innovation in recent years. It is also the only form of gambling recognized in the Gambling Act that does not have a specific statutory definition, the Act providing simply that “bingo” means “any version of that game, irrespective of by what name it is described”. Bingo must be played as an equal chance game. For game to be classed as “bingo” it must meet the Act’s definition of “equal chance gaming” (as opposed to casino gaming). Thus, it: must not involve playing or staking against a bank, and must be a game in which the chances are equally favorable to all participants in the sense that each ticket or chance has the same probability of success as any other.
Licensed bingo is a well-regulated and socially responsible form of gambling that takes place in a safe environment. Many sites offer multiple forms of bingo with different features, types of games, and costs of play. These sites often cater specifically for women and some research suggests that they may appeal to markets who would not typically engage in traditional forms of gambling.

Slots

Slot machine is one of the most beloved game among the gambling community and it has been a part of the industry for a long time. They provide fun and entertainment and their simplicity allows gamers to start playing at once. This can play out in different ways depending on the machine you’re playing. For instance, there’s Pick a Fortune, a five-reel, 20 line game that puts players right in the studio of a television game show, including the potential to play a Deal or No Deal-style bonus round. A super trend over the past few years is mobile-friendly slot games. These apps and websites were developed to enable players to enjoy their favorite games on their smartphones at any time. Another dominant slot trend is licensed branded slots that are based on popular movies, television, and musicians.
Virtual Money vs Real Money
Let’s find out the difference between social gambling and real money gambling, as well as the differences between gambling through apps and gambling through a web browser. It can be quite confusing trawling through all the casinos, slots, and lotteries available, both through your mobile web browser as well as through mobile app stores, in the form of downloadable apps.

Virtual money

The main difference between virtual money and real money gambling is that the in-game virtual currency in social games and gambling-type games is used only like credits that are not paid out as winnings or anything given to player in cash, making these games exempt from gambling regulations.
Virtual money is loaded on user game accounts via in-app purchases in mobile applications or the game balance funding from a card via web based applications.

Real money gambling

Real money gambling via your mobile device is only allowed in countries where laws have been passed that allow for this type of gambling online, or there are no laws in place that prevent it. The payment systems are the legal way of services payment in the gambling app, performing as the intermediary between the gambling facility and the client. With their help, users replenish deposits and withdraw funds to personal accounts in financial institutions. If the application uses the payment system of a well-known brand, that gives players additional confidence in the resource. Nowadays, there is a wide range of payment systems, some of which operate all over the world, other systems are oriented towards the citizens of one or several countries. A number of services accept money of different world currencies, while others allow currency transactions of one state only.
What is an Online Gambling Licensing
The internet has a global audience, there’s no single piece of legislation that covers the legality of online gambling for the entire world. Mobile gambling doesn’t typically accept customers from every single country in the world. It often focuses on certain specific regions.
Instead, most countries have their own local laws that deal with the relevant legal and regulatory issues.
Ultimately, questions of legality all go back to the location of the casino or where the website operates out of. In closed regulatory systems, such as Italy, France, and the Netherlands, licenses, and advertising rights are limited to domestic providers, which must be located within their country’s geographical boundaries and these are only permitted to offer some types of products. Some jurisdictions, for example, Norway, Sweden, and Canada legalize and regulate online gambling, but this is limited to a single site that is owned by the government. Under such an approach, the government becomes the operator and regulator and all revenues are returned to the government.
Remote gambling is generally permitted. That means that an operator that is licensed may provide gambling services to citizens in the country via all forms of remote communication (and using equipment that may be located in the country or abroad). Equally, a remote operator may be licensed to offer gambling services to citizens in any jurisdiction in the world using equipment located in the country. The law provides that, for each type of gambling (betting, gaming, and participating in a lottery), there will be two forms of license available: remote and non-remote forms (land-based). If you provide facilities for remote gambling, online or through other means, and advertise to consumers you will need a license from the licensing jurisdictions or local licensing authorities. Before an online gambling site signs up its first customer, before it accepts its first bet before the first card is dealt, it must be licensed by a recognized governmental entity.
Certain regions in the world have specific legislation in place that allows them to license and regulate companies that operate online gambling sites or provide industry services (such as the supply of gaming software). These regions are referred to as online gambling jurisdictions or licensing jurisdictions.
Depending on what type of entertainment you are going to implement in your internet establishment, you will have to apply for the corresponding permissions. Online gambling laws in Europe vary from one country to the next. The industry is well regulated in some countries and less so in others. There are several online gambling jurisdictions located in Europe. Some of these are members of the European Union (EU), and thus subject to the various rules and regulations of that body, while others are independent. Each of these jurisdictions has an authority that’s responsible for approving gambling sites for licenses that enable them to offer their services legally. They also regulate their licensees.
Countries that Provide Gambling Licensing
Today there are lots of licensing jurisdictions located all over the world and offering different terms for their customers. Depending on the country, licenses can be local, international (distributed in several countries), have a different set of documents for registration, costs of registration and further support, various operating conditions and other special details.

Which gambling license is both internationally recognized?

The government of Ireland offers casino operators, software, and service providers in the gambling industry, with a gambling license that allows gambling operators to conduct business related to casino, lotto, and other gaming-related activities. Ireland Gambling License is one of the most popular license for online casinos worldwide. Ireland has long been recognized as one of the preferred locations for Online Gambling operators to base their operations. This success has been due to a combination of factors, such as a progressive legislative system, political stability, first-rate telecommunications facilities, and a well established financial services industry. A wide range of gambling sites operates out of Ireland including sports betting, casino sites, poker, bingo, and more.
In stark contrast, the UK is the largest regulated market for online gambling in the world, and corporations are already comfortable exploiting the intersections of gambling and gaming, betting in-play, social gaming, Bitcoin, financial trading and spread betting, betting exchanges, e-sports and, most profitably, mobile gambling. 40% and 60% of online gambling in the UK took place in Gibraltar.

International licensing

Europe is home to the following online gambling jurisdictions: Alderney, Gibraltar, Isle of Man, Malta. Malta is currently the country that is most accommodating to gambling companies, and the license offers whitelisted online gambling in sports and casino games in many European territories. But takes an extreme amount of time in paperwork and background checks. Also, you pay 5% of all your gross profit to the EU.
Among countries offering gambling licensing services, the attention should be paid to Curaçao jurisdiction, which is considered to be one of the most promising for the online gaming business.
Curaçao Internet Gaming Association (also known as Curaçao eGaming) is both a regulator and a licensor, and its licensing works worldwide except Curaçao itself, USA, France and Netherlands. Using Curacao as an example, let us examine in detail the process of obtaining a license, the necessary documents and expenses.
How to get a License on Curaçao
  • Documents necessary for company registration:
  • criminal record;
  • passport scans;
  • bank account confirmation;
  • documents proving payments for utility services.
After the company is registered, an operator can apply for the license providing the following documents:
  • a document certifying the right of domain possession;
  • description of games planned to be used in the project;
  • a list indicating countries of potential operation;
  • illustration of server locations to be used in the project;
  • a copy of the agreement with a software provider.
Gambling license cost:
  • Bank account opening $1000
  • Company registration $3600
  • Company management per year $3600
  • Application processing fee $1000
  • License fee per year $4800
  • Equipment/software fee starting from $1500
  • Server maintenance per year $6000
Apart from that pay for technical support and maintenance every year. The entire license issuing process takes between 2-4 weeks. Curacao Internet Gaming Association (CIGA) also has the power to review a license and, if it finds that an operator has breached a license condition, has the power to impose a range of sanctions including revocation of the license.
Apple and Google Gambling Rules
You’ll be surprised at the limited number of real money gambling app options available on the AppStore and Google Play Store. Most real money casino gaming is done through gambler’s mobile web browsers and not through mobile gambling apps that you’ll find for iPhone and Android phones. Apple allows online gambling applications in a few forms, and not just in places where it is explicitly permitted. They do not allow any payments through the applications – those have to be done on the websites. Apple has far stricter developer guidelines for iOS apps than Google does for Android apps, so it’s fine to assume that whatever you choose to download from iTunes is usually safe, secure, and meets a certain standard.
Any real money casino in the iTunes app is required to have proper licensing and permissions before Apple will approve the app for use or downloads. While Google Play is technically regulated, it is much more loose in what can be hosted.

Apple Store

Gambling, gaming, and lotteries can be tricky to manage and tend to be one of the most-regulated offerings on the App Store. Apple has rules for apps that support real money wagering, including sports betting and poker. Those apps and lotteries must have necessary licensing and permissions in the locations where the App is used, must be geo-restricted to those locations, and must be free on the App Store, and Apple rate even simulated gambling apps as appropriate only for users 17-years-old and up.

Play Store

Google keeps the reigns tight. To be able to successfully upload apps to the Google Play store, developers need to have a valid license for the specific countries they are targeting and comply with their regulations. The app must be free to download and must prevent under-age users from gambling in the app. As a final precaution, all gambling apps are required to display prominent information regarding responsible gambling practices. This brings its policy in line with the Apple App Store.
Countries where gambling is illegal
It is also important to remember that while gambling is growing rapidly in many places, in others it is totally or partially prohibited. As well as in the majority of the US, sports betting is illegal in India, Pakistan, and China, three of the largest gambling markets in the world. Most countries have rules against gambling. Almost all Islamic countries prohibit gambling of every kind, but many turn a blind eye to online gambling or simply do not have regulations in place for this grey area.
In the United Arab Emirates, however, any kind of gambling is prosecuted. National lotteries are the only legal forms of wagering on the Asian country’s mainland. Cambodia, North Korea strictly forbids online and offline gambling amongst its own citizens but allows tourists to participate in these activities.
Qatar is the strictest country of all when it comes to gambling laws. All forms of gambling activities are considered illegal, and even sports betting is not permissible.
Starting your own gambling product
Numerous online casino platforms in the market offer fantastic casino games like bingo, poker, roulette, and many more.
If you have an idea, but don’t know where to start, we advise you begin with a Minimal Viable Product (MVP) to pilot your proof of concept for investors. MVP spotlights your core features and lets your investors know there are bigger and better things to come.
For MVP you do not need a large team, just a few people are enough to create a fully functioning prototype. In the case of successful numbers of your prototype, the further development of a full-fledged product will require more team, resources and time, however you will be sure that your development and your costs will pay off.
submitted by Fgfactory_ua to gamedev [link] [comments]

[Weekly Report] Stable Progress During the Epidemic

[Weekly Report] Stable Progress During the Epidemic
Recently, the global economy has experienced severe fluctuations due to the new crown epidemic, and major capital markets have declined in varying degrees, but these have no impact on the promotion of cooperation between LivesOne and BSV. After the Exchange LVTC for BSV event ended, more members of the BSV community began to pay attention to LivesOne and agreed with our concept, laying the foundation for the deeper and broader cooperation between LivesOne and BSV.
LivesOne chooses BSV as the cooperation in many public chains because it agrees with the concept and development prospect of BSV chain.
The existence of BSV chain is for a more secure and more binding and monitoring blockchain application. In this network, all violations will be recorded and tracked, which is more appropriate to the development of social economy.
BSV is currently developing and expanding rapidly. Last December, it held the China Conference in Beijing, this February it held the UK conference in London, and this September or October it is expected to hold the US Conference in New York. Every meeting will attract many entities to participate in the ecological construction of BSV. BSV finally eliminates all doubts about the feasibility of the public chain and proves the possibility of building large-scale enterprise applications on the bitcoin blockchain.
EHR data migrate to BSV Chain

https://preview.redd.it/sjcikzxmcdn41.png?width=601&format=png&auto=webp&s=aaab40a48700b86078e27c6f581af40060a81422
At the BSV London conference held in February 2020, EHR data as a subsidiary of the National Health Coalition (NHC) announced that it is working with nChain to plan to use the BSV network to cope with the crisis of narcotic drugs, migrate all NHC data on the blockchain, use the BSV chain for healthcare record industry to create a single book, and efforts to achieve the digital medical data.
This will benefit the entire global healthcare system, enable the formation of global electronic healthcare records and facilitate data sharing across the healthcare industry. At the same time, it will help reduce black market drug sales, and efforts to prevent "doctor shopping". By putting all patient data into one system, doctors and the whole healthcare industry can get information directly from the same single point, and patients can decide who access to their own medical data, providing greater control and transparency from pharmaceutical companies to end users. This facilitates information sharing may ultimately reduce drug use rates and illegal drug sales. Blockchain can share patient data with multiple parties on the premise of ensuring patient privacy, which can completely solve one of the biggest pain points in the medical industry.

Seafood data migrate to BSV Chain

https://preview.redd.it/jd2u9mypbdn41.png?width=800&format=png&auto=webp&s=f60e2535d2b1fb87214e8a0c517015d21d2e0459
At the BSV conference in London, the blockchain supply management company UNISOT announced that it has officially launched SeafoodChain. UNISOT CEO Stephan Nilsson said that the solution will track the origin of seafood "from sea to plate" and will cover UNISOT ’s entire supply chain from ocean to land. It will bring all the entities in the seafood industry and provide greater transparency and credibility in the seafood industry's operations. This makes operations more efficient and helps companies reduce costs, making them more conducive to positive business growth.
BSV recognizes that Bitcoin is transparent and regulated. The EHR and SeafoodChain projects clearly show the true value of the blockchain. BSV provides all businesses with the winning ingredients to strengthen their activities with a data solution that reduces fraud and streamlines operations. This cooperation shows the value of blockchain for correct data management and storage. We would like to see more industries and organizations make the same decisions as them, adopting blockchain in their daily operations.
At present, the global financial market is struggling. In such an environment, there will be a good future only by doing a good job in ecological construction. We continue to work hard !

Symbiosism Economy Foundation
Mar.18th, 2020
submitted by LivesoneToken to LivesOne [link] [comments]

Escape from Tarkov - New Player Guide!

Introduction

NEW VERSION: https://www.reddit.com/EscapefromTarkov/comments/ffyynf/escape_from_tarkov_new_player_guide_20_75_pages/

Greetings, this is dumnem, also known as Theorchero, but you can call me Theo. I'm an experienced Tarkov player and I'm writing this guide to try and assist new Tarkov players learn the game, because it has one hell of a learning curve. We'll be going over a lot of different aspects of this guide, and it is going to be huge. Feel free to digest this in parts.
Additionally, this is a work in progress. I will write as much as I can in one Reddit post, but subsequent parts will be in additional comments. Google Docs Version (Note: Link is placeholder atm)
Disclaimer: I haven't played Tarkov regularly in a couple months. It's possible there has been extensive changes that I have not kept up with. If there is anything I have gotten wrong or may have omitted, please let me know.
This is Primarily directed towards Tarkov Novices. It hopefully includes everything you need to know to be able to go into a Raid equipped for success and to successfully extract with gear.
Want to play with friends? Want to have fun and learn Tarkov? Check out my discord here.

Changelog

WORKING ON UPDATING FOR .12, HANG TIGHT.
6/2:
  • Added Veritas chart
  • Fixed Vaseline/Star Balm stats, lab key card.
  • Adjusted formatting slightly, spelling adjustments.
  • Added additional resource, updated old ones.

Table of Contents

  • Tarkov Overview - What is Escape from Tarkov?
  • Tarkov Resources - Useful links
  • Tarkov's Maps
  • Tarkov's Health System
  • Tarkov's Quest System and Progression
  • Tarkov's Hotkeys to Know
  • Getting Started
  • Player Scavs
  • New Player's loadouts - LL1 Traders
  • What to Loot - How to get the most money per slot
  • Stash Management - How to combat Gear Fear
  • What now?

Tarkov Overview - What is Escape from Tarkov?

Escape from Tarkov is a tactical, realistic, FPS with MMO elements developed by Battlestate Games. It is currently in closed Beta. The game features several maps in which your primary character, your PMC, goes into Raids in order to find and salvage loot and useful equipment to survive and thrive in Tarkov. Death is very punishing in Tarkov. If you die you lose everything you had on you when you die (with the exception of what's inside your Container and your melee weapon) including any equipment you brought with you or what you found inside the Raid.
Enemies can be players (PMCs) or 'Scavs' (Scavengers) that are either controlled by AI or by players. Unlike many shooters, AI enemies in Tarkov are deadly - they can and will kill you on sight.
It features beautiful and immersive environments, intricate and in-depth weapon modification system, a complex health system, attention to detail with loot placement, and options for combat. Do you want to play slow and stealthy, to avoid fights, or set up a deadly ambush on an unwary foe? Or do you prefer to raw combat, where only your quick wit, placements of shots, and tenaciousness determines who gets out alive? It's your Tarkov. You make the rules.

Tarkov Resources - Useful links

I take no credit or responsibility for any of the content in these links. To the best of my knowledge, these are updated consistently and are accurate, but user beware.

Quick-Reference Ammo Chart

Created by SirKilljoy, you can find it here. Note: As of 6/2/19, Outdated. Searching for updated file. Send if you have one!
An updated ammo chart can be found here. It's not fancy or quick reference though. Sorry!

Tarkov Wiki

Absolutely fantastic resource. You can visit them here.
It is a massive collection of everything that we players have been able to find.
They contain trades, user-created maps, lists of ammo, parts, weapons, loot, etc. If it's in the game, it's on the Wiki, somewhere.
I highly recommend opening the wiki page for the Map that you plan on raiding in.
Factory
Customs
Woods
Shoreline
Interchange
The Lab ('Labs')

Map Keys and You

Huge collection of all the keys in the game. These are also on the wiki, but this page has them all on one page, and tries to inform the user if the key is worth keeping or using.
Check it out here.
This section is open to revision. Mention me in a thread (or in the comments below) about a resource and I'll see about adding it here.

Tarkov's Weapon Compatibility Guide

Pretty self explanatory. Also includes a Key guide and a Mod guide.
Check it out here.

HUGE Reference Bible by Veritas

Courtesy of Veritas (Send me his reddit username?), It's located here. (Open in new tab.)
Contains: Detailed information about: Ammunition, Health, Firearms, Body Armor, Helmets, Rigs & Backpacks, Labs & Quest keys.

Tarkov's Maps

Tarkov features several maps - ranging from wide, beautiful vistas to ruined factory districts, to an abandoned laboratory where illegal experiments were being conducted. It is important to learn the maps you intend to play. In order to keep your gear, you must 'extract' at one of your designated exfiltration points. Not all exfils will be active every game, and some are conditional.
To see what extracts are available to you, double tap 'O' to show raid time and your exfils. If it has a ???? it might not be open.
You can load Raids in an OFFLINE status, which allows you to explore the map or practice against AI without losing gear.
You do not keep any EXP or gear you find in the OFFLINE Raid, though.
To access OFFLINE Raids, head into a Raid normally until you see this screen.
Simply check 'Enable OFFLINE mode for this Raid' and you're good to go! You even have a choice on whether or not to add AI. You can also control how many AI enemies spawn, fewer than normal or a great deal more! You can even make Scavs fight each other. (Framerates beware.)

Factory

Gate 3 Extract
A small, fast-paced map that was primarily created for PvP. Scavs spawn in all the time. Very close quarters, shotguns and SMGs tend to dominate here. PMCs can only access one Exit (Gate 3) without the Factory Exit Key. Good place to go if you need PMC kills as action is pretty much guaranteed. It is recommend NOT to bring in a lot of gear to Factory until you are experienced.

Customs

Extract map
A fairly large map that was recently expanded. Essentially, players spawn either on 'warehouse' or 'boiler (stacks)' side. If you see a large red warehouse near you (Customs Warehouse), then you spawned on the warehouse side. If you don't, you likely spawned near Boiler side.
The location for most quests in the game. Finding geared players here is very easy, so if you are low level attempting to complete early quests (like The Bronze Pocketwatch) it's recommend to AFK in the raid for 20 mins or so, as most players will have moved out of spawns and hit the 'hot' areas already, so it's less likely to be contested, so you may grab your quest item(s) and proceed immediately to Exfil.
Contains a Scav Boss, which is a group of scavs with above-average to high-tier gear that has a chance to spawn in Dorms or Gas Station.

Woods

Woods Map with Exfil
A very large map that is mostly just a large forest, with the occasional bunker, and the Lumber Mill in the center. The Lumber Mill is the primary point of interest, as it contains a couple quest locations and is the primary location to farm Scavs, as Scavs killed on woods is the only known location to find the Arsenal Key, which is the rarest and most valuable key in the game at the moment.
Since the map is so large and open, sniper rifles with scopes usually reign king here. You will see a lot of players with Mosin rifles as they are a cheap way to train the Sniper skill (for a quest later on) and are capable of killing geared players and scavs alike.
Overall, not usually very populated. An early quest from Prapor sends you here to kill a number of Scavs. A good map to learn the game, as although the loot is not fantastic, you can get experience with how the game runs and operates while fighting AI and possibly getting lucky with a key find off a scav.

Shoreline

Shoreline Map, with Loot, Exfil, etc
A very large map, notorious for its FPS hit. Generally speaking, one of the better maps for loot.
The primary point of interest is the Resort, but scavs spawn there, and is primarily occupied by hatchlings (players only with hatchet, ie melee weapon) and geared players. Resort has great loot, but requires keys to access most of it.
A great map to learn though from new players as the outskirts still contains plenty of loot and combat opportunities with AI scavs. You can hit Villa, Scav Island, Weather station, Docks, etc and come out with a backpack full of valuable gear fairly easily.
Location of many quests, including a large quest chain where players are required to kill many, many, scavs on Shoreline.

Interchange

Detailed map
Great, great loot area, but very complex map. Doesn't run very well on old computers. Features a mostly-binary exfil system like Shoreline, but.. kinda worse. Exfil camping is fairly common on this map. Huge map with multiple floors and many many different stores. Communication with teammates is a challenge on this map, but the map is also fantastically detailed.
This map features a lot of loot that depends on the kind of store you're in. It's a great place to farm rare barter materials which are valuable to sell on the Flea market or to use for quests. An early quest (from Ragman) sends you here to kill a large amount of Scavs. I'd recommend getting Ragman to level 2 and accepting his quest before going to Interchange, as getting this quest done can take a while as it is and you want all scav kills to count towards progress.

The Lab ('Labs')

Here's a map.
This is a very complex map, so I highly recommend you read the Wiki article and look at all the maps to get an idea of what it's like.

INSURANCE DOES NOT WORK ON THIS MAP.

If you purchase insurance and lose your items on this map, doesn't matter from whom, you will not get them back.

LABS IS NOT LIKE OTHER MAPS. READ THIS SECTION CAREFULLY.

Labs is by far the most lucrative map to play at the moment. You can easily earn several million roubles per hour by killing Raiders (Juiced-up scavs that are ONLY on Labs), looting their equipment, then running to one of the many, many extracts. Extract camping is hard to pull off and pretty much not viable on Labs.
DISCLAIMER: Labs, like much of Tarkov, is under constant development, so issues may be fixed or created without warning. Always check patch notes!

Raiders

Raiders are the avatars of Death in Tarkov, clad in USEC and BEAR hats, high-end armor, and plenty of firepower to boot. Do not fight Raiders directly. They WILL kill you. Raiders are absolutely broken this patch, and are getting fixed next patch to help fix their exploits of both poor AI and how they're a little.. insane. At the moment, the only way to kill raiders is to camp a hallway, room, or door, and attract the scavs to you, headshotting them the moment they enter before they have a chance to lock onto you.
Raiders can see you through and shoot you through surfaces you cannot.
This means you have to be very careful when engaging them. They are also often equipped with very high-end ammo, meaning that most faceshields (even Killa helmets) can be useless vs a Scav who spawned with 'big boy' ammo, 7N39. They can shoot your head if it's even slightly visible. They can prone instantly, as they have no ping. If they drop without slumping over, get to cover immediately.
Typically, strategies to farm Labs (barring rushing certain rooms for static loot) involve rushing a camp-spot and baiting raiders to your location and taking them out quickly, efficiently, and with no mercy. There are many locations to camp, and since there's so many exfiltrations, it's ultimately up to personal preference.
Raiders often spawn with armor (often Troopers and Gen4s) a rig (Sniper or Ana Alpha rig, usually) and a variety helmets and weapons. Always check the ammo the raiders spawn with. If they spawn with ANYTHING other than PS (and 12 gauge) LOOT IT! You can right click their magazine and hit 'unload ammo' to get the ammo without having to grab the mags, which saves space.
BS, BT, BP, 7N39, etc can be worth several hundred roubles a round on the market. They're extremely valuable.
Additionally, Raiders spawn IFAKS, Morphine, and grenades (F-1 & Flashbangs (Zarya)) with regularity. They can also spawn with random consumables and large clumps of cash in their pockets as well. They can spawn several backpacks, most of them being rather large, if relatively uncommon.
Additionally, Raiders can have American names, breach doors, and mumble as if they are a USEC PMC because some of the Raiders are actually USECs. You will learn with experience what the Scavs will or will not say.
Experience Farming on Labs
Labs is perhaps the best place to farm experience on the current patch.
Killing a Raider with a headshot awards 1100 Experience.
This does not include any looting, inspection (searching bodies), examine, streak, or other experience.
Killing a large sequence of Raiders gives additional bonus experience in the form of Streak rewards, usually 100 bonus exp per additional kill.
Surviving the raid multiplies all of these sources of experience by 1.5x
Changes coming to Labs
Disclaimer: I am not a BSG developer or employee. This is what I have seen on this subreddit and heard elsewhere. Some might be purely rumor, but other points are confirmed by Nikita.
Labs is currently undergoing an overhaul. At the moment, you require consumable Keycards to enter Labs, which may be purchased from Therapist or bartered Mechanic in exchange for 1 Bitcoin starting at Loyalty Level II. They can also be found in drawers and jackets. Scavs can drop permanent keycards that replace most keys used in the previous iteration of labs.
The full extent of the changes coming is not known.
Remember, you can load a map in OFFLINE mode to practice against bots or to learn the map without fear of losing gear.

Tarkov's Health System

Tarkov Wiki Article
Tarkov has a very advanced health system, and while it might seem overwhelming at first, you'll get the hang of it rather quickly. It features a very wide variety of effects and injury, including hydration, energy, blood pressure, blood loss, fractures, contusion, intoxication, exhaustion, tremors and more.
Not all of the Health System is implemented yet. Expect changes!
Your character (PMC, or otherwise) has a combined Health of 435. Each of his limbs have separate health. Taking damage to a limb that reduces it to 0 'blacks' that limb. Blacked limbs are a problem. They greatly impair the activities your PMC performs, and taking damage in a blacked limb amplifies the damage by a multiplier and spreads that damage among your other non-black limbs equally. You cannot heal a blacked limb.
Notes: Bloodloss applies damage to the affected limb and can be spread like other damage to a blacked limb. Treat immediately. Also causes significant dehydration!
Losing a limb applies additional effects. Fractures also apply these effects but not the damage amplification (Except for damage if running on fractured leg.)
Dehydration is what happens when your Hydration level reaches 0. You can view your Hydration level in your gear page, at the bottom left. Becoming dehydrated is extremely bad. You take constant damage. Taking dehydration damage can kill you if you have a black chest or head.
Head/Chest: Bullet damage resulting in losing your head or chest is instant death. Note: Bloodloss resulting in your Head/Chest being black does not result in death, but any damage to them beyond that point will! A back chest will causes you to cough (much like your stomach!)
Painkillers: Prevents coughing that comes from your chest. Doesn't help otherwise.
Stomach: Massively increased rate of dehydration and energy loss. You must find liquids or exit the Raid soon. Additionally, your PMC will cough sputter loudly, attracting attention.
Painkillers: Significantly reduces the frequency and volume of the coughs.
Arms: Makes activities like searching, reloading, etc, take additional time, as well as adding a sway, reducing accuracy. Arms have a .7x damage multiplier.
Painkillers: Reduces sway, removes debuff Pain.
Legs: Blacked legs cause your PMC to stumble and be unable to run. Blacked legs have a 1x damage multiplier.
Painkillers: Allows you to walk at full speed and to run.
WARNING: Running while your legs are blacked or fractured WILL DAMAGE YOU.
Health Items
Tarkov features many health items - 'Aid' items, which can be used to restore your characters health and to fix ailments or injuries he receives as the result of combat or mishaps. The two most important health conditions to consider are bloodloss and fractures, which have both been covered above. Some food items may have ancillary effects, such as losing hydration.
Since in the current patch the only ailments to worry about are bleeding and fractures, it changes which health items are most necessary. We'll go over them below.

Health Restoration

Medical Items on Wiki
AI-2 medkit
The newb's medical kit. You receive several of these when you start Tarkov - they'll already be in your stash. Available from Level I Therapist, they are cheap and effective way of healing early in the game. They will not stop bloodloss. Because of this, you also need to bring bandages or a higher-grade medical kit.
Affectionately called 'little cheeses' by the Tarkov community. Using it takes 2 seconds, and because of how cheap it is, it's often brought in by higher level players to supplement their healing without draining their main kit (which is capable of healing bloodloss or sometimes fractures). Due to its short use time, it's often very useful during combat as you can take cover and quickly recover damage taken to a vital limb.
Bandages
The newb's bloodloss solution. Available from Therapist at Level I. A better version, the Army Bandage is available at Level II, after a quest. Mostly obsolete after unlocking the Car Medical kit. Activating takes 4 seconds, and removes bloodloss to one limb.
Splint
The newb's solution to fractures. Cheap, takes five seconds to use, and takes up 1 slot. Not generally recommended to take because fractures effects can be greatly mitigated with the use of Painkillers. Available from Therapist at Level I, no quest needed.
Car Medical Kit
The newb's first real medical solution. Available LL1 as a barter (2 Duct Tape) and available for Roubles after completing Therapist's second quest. Has a larger health pool than AI-2's (220, vs AI-2's 100), and removes bloodloss. Takes up a 1x2 slot, so requires to be placed in a tactical rig in order to be used effectively. Cheap and fairly efficient, takes a standard 4 seconds to use. Rendered effectively obsolete when the Salewa is unlocked.
Salewa
Good medkit for use in mid and end-game. Contains 400 total health and can remove bloodloss. Relatively expensive at 13k roubles per kit, though. Same size as the Car medical kit, so requires a tactical rig to use effectively. Because Tarkov does not currently have effects like Toxication in the game at the moment, this kit is favored by most players who go into a raid with at least a moderate level of gear.
Unlocked at Therapist Level II after completing a level 10 Prapor quest, Postman Pat Part II.
IFAK
Fantastic medical kit, and is the one preferred by most players. Features 300 health and the ability to remove bloodloss and a host of other negative effects that are not yet implemented into the game. It does not, however, remove fractures. Taking up only a single slot, it is favored by players in all stages of gear, and it is recommend to carry one in your Secure Container in case of emergencies. Is available at Therapist Level II for a barter (Sugar + Sodium), and may be purchased for Roubles at Level III after completing Healthcare Privacy, Part I.
It is a fairly expensive kit, but due to its durability, its small size, and ability to remove bloodloss, it is a very common medical item used by players of all levels.
Grizzly
The 'big daddy' medical kit, boasting an impressive total health resource of 1800. It is also a very large kit, taking up 4 slots (2x2) - in order to be able to use this quickly, it would require specialized tactical rigs that feature a 2x2 slot. It removes all negative effects (some costing HP resource), including fractures.
Used by highly-geared players who intend on staying in raids for an extended period of time, or by players with additional Secure Container space available in case of emergencies. It is available for barter at Therapist Level II, and purchase at Therapist Level 4.

Pain Management

Using any of these items results in your character being 'On Painkillers' which allows you to sprint on fractured and blacked legs, as well as reducing effects of fractures and blacked limbs, and removing the debuff Pain. Essentially, the only difference between most of these items are the speed of use, price, availability, and duration of the effect.
Analgin Painkillers
The holy grail of pain medication. With the recent changes, "Painkillers" now have 4 total uses, not 1. The total duration is now greater than Morphine and less risk of waste. Takes a short time to use, and is available from Therapist Level 1 for both barter and Roubles.
Morphine
Quick application of painkillers. Favored by some highly geared players as it has greater usability in combat then it's typical counterpart, Painkillers. Has a longer duration, but only one use. Is required for a fairly early Therapist (and a late Peacekeeper) Quest, so it is recommend to hoard 10 of them, then sell the rest unless you intend on using them. They are worth a good amount to Therapist and take up little space so they are a valuable loot item. Available from Therapist for Roubles at Level 4, after completing Healthcare Privacy, Part 3.
Augmentin
Basically a cheaper Morphine. One use, 260s. Not recommended over Painkillers due to its cost. No current barter for this item, so usually it's just a fairly expensive, small loot item to sell to Therapist when found.
Ibuprofen
Powerful painkiller. Lasts 600 seconds and has 12 uses. However, it is not recommended to use it as a Painkiller. It is very valuable because it cannot be purchased from Dealers, it must be found, and it is a barter component to late-game containers, the Keytool and THICC Items Case.
Vaseline
Powerful medical item. Cannot be purchased from dealers. Has 10 uses. Removes Pain.
Golden Star Balm
Fairly useful medical item. It can remove Pain and Contusion (not a big deal of a debuff, goes away on its own shortly) and provides a small bonus to hydration and energy. However, because Hydration is usually easy to restore (Liquids are easy to find as 'common' or 'trash' tier loot), and Energy at the moment can't run to 0 within current Raid timers, it is Recommended to just to sell to Therapist as a Loot item.
Medical Injectors are not covered here. Essentially, they are powerful but niche items with strong side effects. Most recommended use is to store them in your Secure Container and sell them either on the Flea Market or to Therapist for roubles.
To be able to Hotkey a medicine item, they must be in a tactical rig or your pockets.

Tarkov's Quest, Progression, and Experience Systems

Tarkov features a very immersive progression system where your main character (PMC) is going into raids to acquire loot - goods that can be sold for a profit to other players, to Dealers (NPC Merchants), or used to fulfill quest requirements in order to complete them and receive your rewards. Additionally, your main character will increase their prowess in a number of skills, which increases everything from how much they can run, increases the ease of which recoil can be controlled, and even how far you can throw grenades. These are referred to 'soft skills.'
Additionally, your PMC is assigned a Level. You can increase your Level by earning Experience - which is rewarded by performing numerous tasks throughout the Raid, completing quests, examining new items, killing other players and Scavs, etc. Successfully extracting from a raid will increase the experience you earn from the raid via a multiplier.
Increasing your PMC's level will allow you to complete additional quests, which increases your Reputation with certain Dealers (and may reduce your Reputation with others) allowing you access to better equipment to purchase. Additionally, completing quests will often reward you with large sums of currency and sometimes equipment, and certain quests unlock items for purchase from that dealer.
A Dealer's arsenal of available weapons, ammo, mods, medication, containers, and etc to purchase by you is determined by their Loyalty Level - or LL, for short. Certain Dealers specialize in different kinds of equipment, and they will pay different rates or straight up not buy particular items. In a future release, eventually Dealers will offer discounts to the player based off their Loyalty Level.
Article on Dealers

Increasing Loyalty Level

Increasing your Trader's loyalty level is extremely important to your progression and overall success in Tarkov. Being able to purchase better Ammo and Equipment is essential to being able to fight other players and secure their loot for your own. Owning Prepare for Escape and Edge of Darkness (EoD) editions of Escape from Tarkov will increase your starting Reputations with Traders. It is unclear if this change will stay after the game's full release.
Typically though, you need three things to increase your Trader's level.
  • Reputation
This is accomplished via quests. Completing a quest will reward you with an increase in the quest givers' reputation, sometimes an increase in another trader's reputation, and sometimes will reduce the Reputation of another trader. Not all Traders need a certain level of Reputation to increase their loyalty Level to II. Peacekeeper and Ragman, for example, just need you to spend a certain amount of money with them.
  • Character Level and Experience Gain
The primary gate behind your trade level (and thus your overall economy and gear leverage) is your Character Level. You increase this by gaining Experience. The easiest way to gain experience is to Loot high value areas, fight players, and kill scavs while completing quests. Generally speaking, your level will advance as you play the game at a moderate pace. One way to farm experience though is to avoid looting all-together and just focus on killing a large number of scavs from a safe distance, after learning where they tend to spawn on any given map. This patch however, labs is fantastic for experience gain. (See above.) Another strategy (albeit one that takes longer) is to loot everything, then drop what you don't want. You gain experience for finding items and picking them up, so picking them up to drop them is technically the best way to gain the most exp per kill.
You can receive additional bonuses to Experience earned. Successfully extracting will increase your experience by a multiplier, typically 1.5x the experience gained during the raid, escaping also rewards a 300 exp Escape bonus which is added to your total before the multiplier is applied.
You can also receive experience bonuses for Exploration, so visiting different parts of the map will reward you with sums of experience, usually 100 to 300 or so. Killing multiple enemies in a row will reward you with Streaks, whose rewards increase as you get more kills. Getting a kill with a Headshot also significantly improves experience gain from kills. You also receive a (very small) bonus when you survive consecutive raids.
Note: Completing a Raid too early (via extraction) will cause you to receive a Run-Through status, which reduces experience earned in that raid by 50%.
Most Quests require you to be a certain level to unlock, and upon completion rewards you with a lot of exp and usually the ability to purchase specific equipment.
  • Money Spent
This is pretty self-explanatory. As mentioned above, Peacekeeper and Ragman can be increased easily just be selling and buying from them. If you need to artifically inflate the amount spent, a good idea is to purchase a large amount of cheap items from them and sell them back to the Trader. You still take a significant loss, usually around 50-60% per purchase, but since the money spent counts both items sold to the vendor and purchases, you get about 140-150% credit per item at about half the cost.

Selling Efficiency

Not all dealers pay the same for certain items. It is important to note that a lot of this is my personal experience, and prices can fluctuate as the Developers may change them for any reason. Use your own common sense and check various dealers before selling particularly lucrative items.

Prapor

Sells AKs, Magazines, many different Ammo types, Grenades, and weapon modifications. I don't tend to sell to him very often, as he doesn't pay the highest for any items that I have personally seen and because you tend to buy most Ammo and mags from him it's not a particular issue to level him up with money spent.

Therapist

Sells medical supplies, food and drink, and storage cases, which are items that effectively increase the size of your stash because they have more space inside than they take up. Most storage items are restricted to certain item types. Pays most for items like Keys, Statues, Rolers, Bitcoin, etc. Many of these items should be sold on the market instead of to her, but often times it's not worth the hassle.

Fence

Pays least for items, sells items for more than other Dealers. Items other players have sold will appear here. Only sell items to Fence that other dealers will not take! Basically a placeholder for an expanded Market.

Skier

Sells various weapons, mods, ammo, Euros, and containers. Pays most for items like Armor, backpacks, headgear, facemasks, flashlights, sights, etc. It is important to note, that Skier will not buy Weapons or most Mods. That means for things like flashlights, you have to take the flashlights/sights off the mount or rail in order for him to buy them, but he pays the best.

Peacekeeper

Deals entirely in Western equipment, UN armor, helmets, etc. Will buy most items, but will pay USD for them. Deals entirely in USD. One good way to get his money spent requirement is just to buy USD, which is used for a later quest from Skier, which unlocks his quest chain. He has a lot of good deals, experiment for yourself. At the moment his MP5 for 10 'bars' knives (scav knives) is an exceptionally good deal and easy to accomplish for new players.

Mechanic

Sells mostly completed weapons with various modifications and unique names, and mods. Sells magazines and some ammo. Offers containers as you progress. His quests are easy to complete, but often are money dumps in exchange for large sums of EXP more than anything else. Pays the most for modifications (except for sights and suppressors) and stripped guns.

Ragman

Sells backpacks, armor, tactical vests, and helmets mostly. Offers aesthetic clothing. Can obtain LL2 by just purchasing from him, does not require reputation. In fact, his first quest tasks you with that very objective. As far as I can see, he does not pay the most for any items in particular. But he is a very useful merchant once you have him at level 2. He will sell Scav Backpacks, which are an extremely efficient backpack to use as it's fairly large but very cheap.
Rule of Thumb for selling items at most value
Weapons: Strip the weapon! Take apart ALL pieces of it (including gas tubes, separating flashlights from ring mounts, etc), sell what you can to Skier. For the rest, sell to Mechanic.
Keys, Food, Medical Items, Statues, Bitcoin, Rolers, etc: Therapist or the Market. For items like this, ALWAYS check the Market first! A lot of these kinds of items are in valuable trades or are required for quests; this means that other players are often willing to pay more for them, above trader prices.

Continued below in a comment, due to character limit.

submitted by dumnem to EscapefromTarkov [link] [comments]

FlowCards: A Declarative Framework for Development of Ergo dApps

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

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

FlowCards: A Declarative Framework for Development of Ergo dApps

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

From Imperative to Declarative

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

From Changing State to Checking Context

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

FlowCard Diagrams

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

Example: Decentralized Exchange (DEX)

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

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

From Diagrams To ErgoScript Contracts

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

Conclusions

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

EDC Blockchain Is a Solution For Turkish Business Tokenization

EDC Blockchain Is a Solution For Turkish Business Tokenization

https://preview.redd.it/aab33jvpr2t31.jpg?width=1961&format=pjpg&auto=webp&s=1c0cf76975b2c721f968edea47728e88084dd34e
Several types of research from different companies have shown a huge interest to blockchain technologies and cryptocurrencies among Turkish people. An online poll conducted by German data company Statista confirmed that one Turkish among five have had the experience or currently own cryptocurrency.

Source: Statista.com 
However, the number of companies accepting Bitcoin as a means of payment is not that significant given the potential amount of cryptocurrency being held in Turkey - only around 50-60 stores. That’s an area that has a huge potential for growth in the near future, especially given the fact that Turkey does not consider Bitcoin payments illegal. It’s theoretically possible to buy either real estate or furniture with the help of crypto assets.

A way out
Turkey’s economic and social development builds the best ground for blockchain-based platforms that may not only allow its users not only to make extremely fast transactions with a minimum commission fee but also tokenize already existing businesses.
Such emerging markets as Malaysia, UAE, Nigeria, India, Indonesia have already shown a good example of integrating a universal blockchain platform into its e-commerce industry. More than one million users all over the world have become the members of the EDC Blockchain platform that offers an all-inclusive solution having its own blockchain, exchange and marketing options for any kind of business and startup.

What is the EDC platform?
EDC Blockchain is a universal blockchain platform that allows either individuals or businesses to develop and tokenize existing businesses joining EDC - from hobbies to small and medium scale businesses.
Moreover, the platform provides the opportunity to make fast transfers with a minimum commission and receive rewards for transferring coins for a lease to large pools.
The EDC Blockchain uses the most advanced technology Graphene, where open source acts as a consensus mechanism. In fact, Graphene is the only blockchain protocol with an industrial level of productivity which performance is enough for large socio-economic systems.
This is the fastest blockchain existing at the moment, which is able to process up to 100,000 transactions per second.
The technical characteristics of this platform involve the formation of a new block every 3 seconds, support for payments with a low fee, as well as the ability to work with several tokens at the same time.
To sum-up, EDC Blockchain technology has the following advantages:
  • Processing up to 100,000 transactions per second
  • The ability to create multiple tokens simultaneously
  • New block formation every 3 seconds
  • Safe and fast system
  • Low fee
That is why the EDC Blockchain platform is popular in 57 countries, including Turkey, Latin America, China, Indonesia, and others, while more than 1 million wallets are registered in the system.

Turkish market needs tokenization
In the environment of the thriving Turkish market crowded with small scale businesses looking for a new target audience, tokenization solution may become a unique selling point for any startup seeking to get advantage from the interaction with cryptocurrency holders.
EDC Blockchain is an advanced solution among modern blockchain platforms. This is an aggregator with its own blockchain, exchange, and marketing opportunities for any type of business or a startup.
By attracting promising startups, as well as creating projects on its blockchain with the help of the coin constructor, which are directly tied to existing assets, EDC Blockchain creates liquidity by itself.

EDC coin
The main tool of the EDC Blockchain platform and fuel for the entire ecosystem is the EDC coin. It provides access to all the services of the EDC Blockchain ecosystem and even makes it possible to receive rewards through a leasing program or can be used as a bonus coin in loyalty promotions for any company.
The total issuance of EDC coins is limited to 100 billion EDC - coin burning mechanism supports a natural shortage of coins in circulation. According to the CoinMarketCap data, 2.67 billion EDC coins are in free circulation currently. The last coin will be produced in January 2040.

Tokens for any audience
The constructor of coins on the EDC blockchain platform is designed for the production, storage, trading and management of digital assets, which gives big opportunities for business tokenization.
What’s more, any startup may find the best package for creating its own digital asset (token) that suits his/her interests starting from an opportunity to create a coin, give it a symbol and a description, and ending with an opportunity to create a cryptocurrency with the PoS mining algorithm and a wide choice of characteristics.
This is a perfect way to create fully or partially custom tokens, which allows you to implement various projects.
With the help of EDC Blockchain coin constructor, you will have everything at your hand, since a special code will reliably protect your digital assets. Thus, a customer will get a listing of his or her token on EDC Blockchain partner exchanges. There are many advantages that could be named, but the most obvious one is the savings on programmers and hosting.

About EDC Blockchain
ECRO Chain manages the EDC Blockchain project, while highly experienced blockchain expert Vaz Eghiazar holds the position of CEO of the ECRO Chain company.
The EDC Blockchain platform has already entered Asian, European, the CIS, and Latin American markets. The project aims at blockchain integration in the real economy, as well as small and medium scale business tokenization.
Turkey is an advanced country and may become an integral part of the ever-increasing community, enjoying the advanced innovative blockchain solutions of EDC Blockchain.
via https://blockchain.mn
#edcblockchain #cryptocurrency #global_platform #graphene #lpos #coin_constructor #masternode #leasing #edc #edccoin #edcmining
submitted by EDC-Blockchain to u/EDC-Blockchain [link] [comments]

The Future of Bitcoin  The Bitcoin Security Threats NO ONE IS TALKING ABOUT! Bitcoin: Beyond The Bubble - Full Documentary - YouTube Cryptocurrency: The Future of Finance and Money - YouTube BITCOIN BIG MOVE NEXT!! Energy Standard, Trump, Davos, Lightning Network

Bitcoin are broken down for transactions of a lower value – so if you were to purchase a pizza now with Bitcoin, it would cost, for example, one 0.0025 of a Bitcoin. One Bitcoin is divisible down to 100,000,000 pieces, or 8 decimal places. If you want to sell (or buy) a Bitcoin, you can do so via the online Bitcoin Exchanges, and receive traditional currency to your bank. A new study (by Foley, Karlsen, and Putniņš, 2019) examines the extent of illegal activity in the Bitcoin market. It focuses on approximately 300 million transactions in Bitcoin used for ... “We believe that bitcoin has the potential to be a more ubiquitous currency in the future. As it grows in adoption, we intend to learn and participate in a disciplined way. For a company that is building products based on a more inclusive future, this investment is a step on that journey.” The investment makes Square the second technology firm that has put faith in Bitcoin and made major ... On behalf of the bComm Association (the leading industry association for Bitcoin SV) and the entire BSV ecosystem, we want to send a very clear message: the Bitcoin SV blockchain is a not a place for criminal activity, and if you use it for illegal purposes, you will leave a digitally signed evidence trail that cannot be erased. This evidence is fully admissible in a court of law, and you will ... This implies that Bitcoin has the potential to have a significant impact on the future conduct of online business. As mentioned before, Bitcoin currently operates both as a payment system for electronic transactions as well as a cryptocurrency that enables investing, with the two being inextricably intertwined. This necessitates an empirical investigation that explores both aspects ...

[index] [24972] [37769] [46319] [49902] [51504] [28930] [46186] [45195] [48803] [30526]

The Future of Bitcoin "Glenn Beck Program"

Cryptocurrency is going to be a democratizing force for the world because it allows anyone with a computer and an internet connection to get access to financ... Thanks for watching! For donations: Bitcoin - 1CpGMM8Ag8gNYL3FffusVqEBUvHyYenTP8 Bitcoin is a digital currency created in 2009. You can use it to buy things online around the world. It is growing in popularity and some are concerned because it is not yet governed. Originally ... Bitcoin security is rarely questioned, but should we be questioning the future of Bitcoin’s security? There is a distributed effort currently attempting to break Bitcoin’s wallet generating ... Bitcoin Technical Analysis & Bitcoin News Today: Is the Bitcoin price ready for a bull run? I'll use technical analysis on the Bitcoin price to make a Bitcoin price prediction. I'll also do some ...

#