7 Binary Options – Effective Money Management Strategy for ...

[N] Tensorflow 2.3.0 Released!

There is also a new experimental tf.data API for saving and loading datasets(https://www.tensorflow.org/versions/r2.3/api_docs/python/tf/data/experimental/save)
https://github.com/tensorflow/tensorflow/commit/4d58a67a9f19ab8d0cfbb2d8e461ebb73ce06db6
https://github.com/tensorflow/tensorflow/issues/38483#issuecomment-640963109

https://github.com/tensorflow/tensorflow/releases/tag/v2.3.0

Release 2.3.0

Major Features and Improvements


In addition checkout the detailed guide for analyzing input pipeline performance with TF Profiler.

Breaking Changes


Known Caveats


Bug Fixes and Other Changes

TF Core:


tf.data:


tf.distribute:


tf.keras:


tf.lite:


Packaging Support


Profiler


TPU Enhancements


Tracing and Debugging


XLA Support


submitted by IIIBlueberry to MachineLearning [link] [comments]

Part 2: Tools & Info for Sysadmins - Mega List of Tips, Tools, Books, Blogs & More

(continued from part 1)
Unlocker is a tool to help delete those irritating locked files that give you an error message like "cannot delete file" or "access is denied." It helps with killing processes, unloading DLLs, deleting index.dat files, as well as unlocking, deleting, renaming, and moving locked files—typically without requiring a reboot.
IIS Crypto's newest version adds advanced settings; registry backup; new, simpler templates; support for Windows Server 2019 and more. This tool lets you enable or disable protocols, ciphers, hashes and key exchange algorithms on Windows and reorder SSL/TLS cipher suites from IIS, change advanced settings, implement best practices with a single click, create custom templates and test your website. Available in both command line and GUI versions.
RocketDock is an application launcher with a clean interface that lets you drag/drop shortcuts for easy access and minimize windows to the dock. Features running application indicators, multi-monitor support, alpha-blended PNG and ICO icons, auto-hide and popup on mouse over, positioning and layering options. Fully customizable, portable, and compatible with MobyDock, ObjectDock, RK Launcher and Y'z Dock skins. Works even on slower computers and is Unicode compliant. Suggested by lieutenantcigarette: "If you like the dock on MacOS but prefer to use Windows, RocketDock has you covered. A superb and highly customisable dock that you can add your favourites to for easy and elegant access."
Baby FTP Server offers only the basics, but with the power to serve as a foundation for a more-complex server. Features include multi-threading, a real-time server log, support for PASV and non-PASV mode, ability to set permissions for download/upload/rename/delete/create directory. Only allows anonymous connections. Our thanks to FatherPrax for suggesting this one.
Strace is a Linux diagnostic, debugging and instructional userspace tool with a traditional command-line interface. Uses the ptrace kernel feature to monitor and tamper with interactions between processes and the kernel, including system calls, signal deliveries and changes of process state.
exa is a small, fast replacement for ls with more features and better defaults. It uses colors to distinguish file types and metadata, and it recognizes symlinks, extended attributes and Git. All in one single binary. phils_lab describes it as "'ls' on steroids, written in Rust."
rsync is a faster file transfer program for Unix to bring remote files into sync. It sends just the differences in the files across the link, without requiring both sets of files to be present at one of the ends. Suggested by zorinlynx, who adds that "rsync is GODLY for moving data around efficiently. And if an rsync is interrupted, just run it again."
Matter Wiki is a simple WYSIWYG wiki that can help teams store and collaborate. Every article gets filed under a topic, transparently, so you can tell who made what changes to which document and when. Thanks to bciar-iwdc for the recommendation.
LockHunter is a file unlocking tool that enables you to delete files that are being blocked for unknown reasons. Can be useful for fighting malware and other programs that are causing trouble. Deletes files into the recycle bin so you can restore them if necessary. Chucky2401 finds it preferable to Unlocker, "since I am on Windows 7. There are no new updates since July 2017, but the last beta was in June of this year."
aria2 is a lightweight multi-source command-line download utility that supports HTTP/HTTPS, FTP, SFTP, BitTorrent and Metalink. It can be manipulated via built-in JSON-RPC and XML-RPC interfaces. Recommended by jftuga, who appreciates it as a "cross-platform command line downloader (similar to wget or curl), but with the -x option can run a segmented download of a single file to increase throughput."
Free Services
Temp-Mail allows you to receive email at a temporary address that self-destructs after a certain period of time. Outwit all the forums, Wi-Fi owners, websites and blogs that insist you register to use them. Petti-The-Yeti says, "I don't give any company my direct email anymore. If I want to trial something but they ask for an email signup, I just grab a temporary email from here, sign up with it, and wait for the trial link or license info to come through. Then, you just download the file and close the website."
Duck DNS will point a DNS (sub domains of duckdns.org) to an IP of your choice. DDNS is a handy way for you to refer to a serverouter with an easily rememberable name for situations when the server's ip address will likely change. Suggested by xgnarf, who finds it "so much better for the free tier of noip—no 30-day nag to keep your host up."
Joe Sandbox detects and analyzes potential malicious files and URLs on Windows, Android, Mac OS, Linux and iOS for suspicious activities. It performs deep malware analysis and generates comprehensive and detailed reports. The Community Edition of Joe Sandbox Cloud allows you to run a maximum of 6 analyses per month, 3 per day on Windows, Linux and Android with limited analysis output. This one is from dangibbons94, who wanted to "share this cool service ... for malware analysis. I usually use Virus total for URL scanning, but this goes a lot more in depth. I just used basic analysis, which is free and enough for my needs."
Hybrid Analysis is a malware analysis service that detects and analyzes unknown threats for the community. This one was suggested by compupheonix, who adds that it "gets you super detailed reports... it's about the most fleshed out and detailed one I can find."
JustBeamIt is a file-transfer service that allows you to send files of any size via a peer-to-peer streaming model. Simply drag and drop your file and specify the recipient's email address. They will then receive a link that will trigger the download directly from your computer, so the file does not have to be uploaded to the service itself. The link is good for one download and expires after 10 minutes. Thanks to cooljacob204sfw for the recommendation!
ShieldsUP is a quick but powerful internet security checkup and information service. It was created by security researcher Steve Gibson to scan ports and let you know which ones have been opened through your firewalls or NAT routers.
Firefox Send is an encrypted file transfer service that allows you to share files up to 2.5GB from any browser or an Android app. Uses end-to-end encryption to keep data secure and offers security controls you can set. You can determine when your file link expires, the number of downloads, and whether to add a password. Your recipient receives a link to download the file, and they don’t need a Firefox account. This one comes from DePingus, who appreciates the focus on privacy. "They have E2E, expiring links, and a clear privacy policy."
Free DNS is a service where programmers share domain names with one another at no cost. Offers free hosting as well as dynamic DNS, static DNS, subdomain and domain hosting. They can host your domain's DNS as well as allowing you to register hostnames from domains they're hosting already. If you don't have a domain, you can sign up for a free account and create up to 5 subdomains off the domains others have contributed and point these hosts anywhere on the Internet. Thanks to 0x000000000000004C (yes, that's a username) for the suggestion!
ANY.RUN is an interactive malware analysis service for dynamic and static research of the majority of threats in any environment. It can provide a convenient in-depth analysis of new, unidentified malicious objects and help with the investigation of incidents. ImAshtonTurner appreciates it as "a great sandbox tool for viewing malware, etc."
Plik is a scalable, temporary file upload system similar to wetransfer that is written in golang. Thanks go to I_eat_Narwhals for this one!
Free My IP offers free, dynamic DNS. This service comes with no login, no ads, no newsletters, no links to click and no hassle. Kindly suggested by Jack of All Trades.
Mailinator provides free, temporary email inboxes on a receive-only, attachment-free system that requires no sign-up. All @mailinator.com addresses are public, readable and discoverable by anyone at any time—but are automatically deleted after a few hours. Can be a nice option for times when you to give out an address that won't be accessible longterm. Recommended by nachomountain, who's been using it "for years."
Magic Wormhole is a service for sending files directly with no intermediate upload, no web interface and no login. When both parties are online you with the minimal software installed, the wormhole is invoked via command line identifying the file you want to send. The server then provides a speakable, one-time-use password that you give the recipient. When they enter that password in their wormhole console, key exchange occurs and the download begins directly between your computers. rjohnson99 explains, "Magic Wormhole is sort of like JustBeamIt but is open-source and is built on Python. I use it a lot on Linux servers."
EveryCloud's Free Phish is our own, new Phishing Simulator. Once you've filled in the form and logged in, you can choose from lots of email templates (many of which we've coped from what we see in our Email Security business) and landing pages. Run a one-off free phish, then see who clicked or submitted data so you can understand where your organization is vulnerable and act accordingly.
Hardening Guides
CIS Hardening Guides contain the system security benchmarks developed by a global community of cybersecurity experts. Over 140 configuration guidelines are provided to help safeguard systems against threats. Recommended by cyanghost109 "to get a start on looking at hardening your own systems."
Podcasts
Daily Tech News is Tom Merrit's show covering the latest tech issues with some of the top experts in the field. With the focus on daily tech news and analysis, it's a great way to stay current. Thanks to EmoPolarbear for drawing it to our attention.
This Week in Enterprise Tech is a podcast that features IT experts explaining the complicated details of cutting-edge enterprise technology. Join host Lou Maresca on this informative exploration of enterprise solutions, with new episodes recorded every Friday afternoon.
Security Weekly is a podcast where a "bunch of security nerds" get together and talk shop. Topics are greatly varied, and the atmosphere is relaxed and conversational. The show typically tops out at 2 hours, which is perfect for those with a long commute. If you’re fascinated by discussion of deep technical and security-related topics, this may be a nice addition to your podcast repertoire.
Grumpy Old Geeks—What Went Wrong on the Internet and Who's To Blame is a podcast about the internet, technology and geek culture—among other things. The hosts bring their grumpy brand of humor to the "state of the world as they see it" in these roughly hour-long weekly episodes. Recommended by mkaxsnyder, who enjoys it because, "They are a good team that talk about recent and relevant topics from an IT perspective."
The Social-Engineer Podcast is a monthly discussion among the hosts—a group of security experts from SEORG—and a diverse assortment of guests. Topics focus around human behavior and how it affects information security, with new episodes released on the second Monday of every month. Thanks to MrAshRhodes for the suggestion.
The CyberWire podcasts discuss what's happening in cyberspace, providing news and commentary from industry experts. This cyber security-focused news service delivers concise, accessible, and relevant content without the gossip, sensationalism, and the marketing buzz that often distract from the stories that really matter. Appreciation to supermicromainboard for the suggestion.
Malicious Life is a podcast that tells the fascinating—and often unknown—stories of the wildest hacks you can ever imagine. Host Ran Levi, a cybersecurity expert and author, talks with the people who were actually involved to reveal the history of each event in depth. Our appreciation goes to peraphon for the recommendation.
The Broadcast Storm is a podcast for Cisco networking professionals. BluePieceOfPaper suggests it "for people studying for their CCNA/NP. Kevin Wallace is a CCIE Collaboration so he knows his *ishk. Good format for learning too. Most podcasts are about 8-15 mins long and its 'usually' an exam topic. It will be something like "HSPR" but instead of just explaining it super boring like Ben Stein reading a powerpoint, he usually goes into a story about how (insert time in his career) HSPR would have been super useful..."
Software Engineering Radio is a podcast for developers who are looking for an educational resource with original content that isn't recycled from other venues. Consists of conversations on relevant topics with experts from the software engineering world, with new episodes released three to four times per month. a9JDvXLWHumjaC tells us this is "a solid podcast for devs."
Books
System Center 2012 Configuration Manager is a comprehensive technical guide designed to help you optimize Microsoft's Configuration Manager 2012 according to your requirements and then to deploy and use it successfully. This methodical, step-by-step reference covers: the intentions behind the product and its role in the broader System Center product suite; planning, design, and implementation; and details on each of the most-important feature sets. Learn how to leverage the user-centric capabilities to provide anytime/anywhere services & software, while strengthening control and improving compliance.
Network Warrior: Everything You Need to Know That Wasn’t on the CCNA Exam is a practical guide to network infrastructure. Provides an in-depth view of routers and routing, switching (with Cisco Catalyst and Nexus switches as examples), SOHO VoIP and SOHO wireless access point design and configuration, introduction to IPv6 with configuration examples, telecom technologies in the data-networking world (including T1, DS3, frame relay, and MPLS), security, firewall theory and configuration, ACL and authentication, Quality of Service (QoS), with an emphasis on low-latency queuing (LLQ), IP address allocation, Network Time Protocol (NTP) and device failures.
Beginning the Linux Command Line is your ally in mastering Linux from the keyboard. It is intended for system administrators, software developers, and enthusiastic users who want a guide that will be useful for most distributions—i.e., all items have been checked against Ubuntu, Red Hat and SUSE. Addresses administering users and security and deploying firewalls. Updated to the latest versions of Linux to cover files and directories, including the Btrfs file system and its management and systemd boot procedure and firewall management with firewalld.
Modern Operating Systems, 4th Ed. is written for students taking intro courses on Operating Systems and for those who want an OS reference guide for work. The author, an OS researcher, includes both the latest materials on relevant operating systems as well as current research. The previous edition of Modern Operating Systems received the 2010 McGuffey Longevity Award that recognizes textbooks for excellence over time.
Time Management for System Administrators is a guide for organizing your approach to this challenging role in a way that improves your results. Bestselling author Thomas Limoncelli offers a collection of tips and techniques for navigating the competing goals and concurrent responsibilities that go along with working on large projects while also taking care of individual user's needs. The book focuses on strategies to help with daily tasks that will also allow you to handle the critical situations that inevitably require your attention. You'll learn how to manage interruptions, eliminate time wasters, keep an effective calendar, develop routines and prioritize, stay focused on the task at hand and document/automate to speed processes.
The Practice of System and Network Administration, 3rd Edition introduces beginners to advanced frameworks while serving as a guide to best practices in system administration that is helpful for even the most advanced experts. Organized into four major sections that build from the foundational elements of system administration through improved techniques for upgrades and change management to exploring assorted management topics. Covers the basics and then moves onto the advanced things that can be built on top of those basics to wield real power and execute difficult projects.
Learn Windows PowerShell in a Month of Lunches, Third Edition is designed to teach you PowerShell in a month's worth of 1-hour lessons. This updated edition covers PowerShell features that run on Windows 7, Windows Server 2008 R2 and later, PowerShell v3 and later, and it includes v5 features like PowerShellGet. For PowerShell v3 and up, Windows 7 and Windows Server 2008 R2 and later.
Troubleshooting with the Windows Sysinternals Tools is a guide to the powerful Sysinternals tools for diagnosing and troubleshooting issues. Sysinternals creator Mark Russinovich and Windows expert Aaron Margosis provide a deep understanding of Windows core concepts that aren’t well-documented elsewhere along with details on how to use Sysinternals tools to optimize any Windows system’s reliability, efficiency, performance and security. Includes an explanation of Sysinternals capabilities, details on each major tool, and examples of how the tools can be used to solve real-world cases involving error messages, hangs, sluggishness, malware infections and more.
DNS and BIND, 5th Ed. explains how to work with the Internet's distributed host information database—which is responsible for translating names into addresses, routing mail to its proper destination, and listing phone numbers according to the ENUM standard. Covers BIND 9.3.2 & 8.4.7, the what/how/why of DNS, name servers, MX records, subdividing domains (parenting), DNSSEC, TSIG, troubleshooting and more. PEPCK tells us this is "generally considered the DNS reference book (aside from the RFCs of course!)"
Windows PowerShell in Action, 3rd Ed. is a comprehensive guide to PowerShell. Written by language designer Bruce Payette and MVP Richard Siddaway, this volume gives a great introduction to Powershell, including everyday use cases and detailed examples for more-advanced topics like performance and module architecture. Covers workflows and classes, writing modules and scripts, desired state configuration and programming APIs/pipelines.This edition has been updated for PowerShell v6.
Zero Trust Networks: Building Secure Systems in Untrusted Networks explains the principles behind zero trust architecture, along with what's needed to implement it. Covers the evolution of perimeter-based defenses and how they evolved into the current broken model, case studies of zero trust in production networks on both the client and server side, example configurations for open-source tools that are useful for building a zero trust network and how to migrate from a perimeter-based network to a zero trust network in production. Kindly recommended by jaginfosec.
Tips
Here are a couple handy Windows shortcuts:
Here's a shortcut for a 4-pane explorer in Windows without installing 3rd-party software:
(Keep the win key down for the arrows, and no pauses.) Appreciation goes to ZAFJB for this one.
Our recent tip for a shortcut to get a 4-pane explorer in Windows, triggered this suggestion from SevaraB: "You can do that for an even larger grid of Windows by right-clicking the clock in the taskbar, and clicking 'Show windows side by side' to arrange them neatly. Did this for 4 rows of 6 windows when I had to have a quick 'n' dirty "video wall" of windows monitoring servers at our branches." ZAFJB adds that it actually works when you right-click "anywhere on the taskbar, except application icons or start button."
This tip comes courtesy of shipsass: "When I need to use Windows Explorer but I don't want to take my hands off the keyboard, I press Windows-E to launch Explorer and then Ctrl-L to jump to the address line and type my path. The Ctrl-L trick also works with any web browser, and it's an efficient way of talking less-technical people through instructions when 'browse to [location]' stumps them."
Clear browser history/cookies by pressing CTRL-SHIFT-DELETE on most major browsers. Thanks go to synapticpanda, who adds that this "saves me so much time when troubleshooting web apps where I am playing with the cache and such."
To rename a file with F2, while still editing the name of that file: Hit TAB to tab into the renaming of the next file. Thanks to abeeftaco for this one!
Alt-D is a reliable alternative to Ctrl-L for jumping to the address line in a browser. Thanks for this one go to fencepost_ajm, who explains: "Ctrl-L comes from the browser side as a shortcut for Location, Alt-D from the Windows Explorer side for Directory."
Browser shortcut: When typing a URL that ends with dot com, Ctrl + Enter will place the ".com" and take you to the page. Thanks to wpierre for this one!
This tip comes from anynonus, as something that daily that saves a few clicks: "Running a program with ctrl + shift + enter from start menu will start it as administrator (alt + y will select YES to run as admin) ... my user account is local admin [so] I don't feel like that is unsafe"
Building on our PowerShell resources, we received the following suggestion from halbaradkenafin: aka.ms/pskoans is "a way to learn PowerShell using PowerShell (and Pester). It's really cool and a bunch of folks have high praise for it (including a few teams within MSFT)."
Keyboard shortcut: If you already have an application open, hold ctrl + shift and middle click on the application in your task bar to open another instance as admin. Thanks go to Polymira for this one.
Remote Server Tip: "Critical advice. When testing out network configuration changes, prior to restarting the networking service or rebooting, always create a cron job that will restore your original network configuration and then reboot/restart networking on the machine after 5 minutes. If your config worked, you have enough time to remove it. If it didn't, it will fix itself. This is a beautifully simple solution that I learned from my old mentor at my very first job. I've held on to it for a long time." Thanks go to FrigidNox for the tip!
Websites
Deployment Research is the website of Johan Arwidmark, MS MVP in System Center Cloud and Datacenter Management. It is dedicated to sharing information and guidance around System Center, OS deployment, migration and more. The author shares tips and tricks to help improve the quality of IT Pros’ daily work.
Next of Windows is a website on (mostly) Microsoft-related technology. It's the place where Kent Chen—a computer veteran with many years of field experience—and Jonathan Hu—a web/mobile app developer and self-described "cool geek"—share what they know, what they learn and what they find in the hope of helping others learn and benefit.
High Scalability brings together all the relevant information about building scalable websites in one place. Because building a website with confidence requires a body of knowledge that can be slow to develop, the site focuses on moving visitors along the learning curve at a faster pace.
Information Technology Research Library is a great resource for IT-related research, white papers, reports, case studies, magazines, and eBooks. This library is provided at no charge by TradePub.com. GullibleDetective tells us it offers "free PDF files from a WIIIIIIDE variety of topics, not even just IT. Only caveat: as its a vendor-supported publishing company, you will have to give them a bit of information such as name, email address and possibly a company name. You undoubtedly have the ability to create fake information on this, mind you. The articles range from Excel templates, learning python, powershell, nosql etc. to converged architecture."
SS64 is a web-based reference guide for syntax and examples of the most-common database and OS computing commands. Recommended by Petti-The-Yeti, who adds, "I use this site all the time to look up commands and find examples while I'm building CMD and PS1 scripts."
Phishing and Malware Reporting. This website helps you put a stop to scams by getting fraudulent pages blocked. Easily report phishing webpages so they can be added to blacklists in as little as 15 minutes of your report. "Player024 tells us, "I highly recommend anyone in the industry to bookmark this page...With an average of about 10 minutes of work, I'm usually able to take down the phishing pages we receive thanks to the links posted on that website."
A Slack Channel
Windows Admin Slack is a great drive-by resource for the Windows sysadmin. This team has 33 public channels in total that cover different areas of helpful content on Windows administration.
Blogs
KC's Blog is the place where Microsoft MVP and web developer Kent Chen shares his IT insights and discoveries. The rather large library of posts offer helpful hints, how-tos, resources and news of interest to those in the Windows world.
The Windows Server Daily is the ever-current blog of technologist Katherine Moss, VP of open source & community engagement for StormlightTech. Offers brief daily posts on topics related to Windows server, Windows 10 and Administration.
An Infosec Slideshow
This security training slideshow was created for use during a quarterly infosec class. The content is offered generously by shalafi71, who adds, "Take this as a skeleton and flesh it out on your own. Take an hour or two and research the things I talk about. Tailor this to your own environment and users. Make it relevant to your people. Include corporate stories, include your audience, exclude yourself. This ain't about how smart you are at infosec, and I can't stress this enough, talk about how people can defend themselves. Give them things to look for and action they can take. No one gives a shit about your firewall rules."
Tech Tutorials
Tutorialspoint Library. This large collection of tech tutorials is a great resource for online learning. You'll find nearly 150 high-quality tutorials covering a wide array of languages and topics—from fundamentals to cutting-edge technologies. For example, this Powershell tutorial is designed for those with practical experience handling Windows-based Servers who want to learn how to install and use Windows Server 2012.
The Python Tutorial is a nice introduction to many of Python’s best features, enabling you to read and write Python modules and programs. It offers an understanding of the language's style and prepares you to learn more about the various Python library modules described in 'The Python Standard Library.' Kindly suggested by sharjeelsayed.
SysAdmin Humor
Day in the Life of a SysAdmin Episode 5: Lunch Break is an amusing look at a SysAdmin's attempt to take a brief lunch break. We imagine many of you can relate!
Have a fantastic week and as usual, let me know any comments or suggestions.
u/crispyducks
submitted by crispyducks to sysadmin [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/sxs3kesvrsv41.png?width=1348&format=png&auto=webp&s=582382bc26912ff79114d831d937d94b6988e69f
The picture visually describes the following steps, which the network user needs to perform:
  1. Select unspent sender's boxes, containing in total tB >= amount of tokens and B >= txFee + minErg ERGs.
  2. Create an output target box which is protected by the receiver public key with minErg ERGs and amount of T tokens.
  3. Create one fee output protected by the minerFee contract with txFee ERGs.
  4. Create one change output protected by the sender public key, containing B - minErg - txFee ERGs and tB - amount of T tokens.
  5. Create a new transaction, sign it using the sender's secret key and send to the Ergo network.
What is important to understand here is that all of these steps are preformed off-chain (for example using Appkit Transaction API) by the user's application. Ergo network nodes don't need to repeat this transaction creation process, they only need to validate the already formed transaction. ErgoScript contracts are stored in the inputs of the transaction and check spending conditions. The node executes the contracts on-chain when the transaction is validated. The transaction is valid if all of the conditions are satisfied.
Thus, in Ethereum when we “send amount from sender to recipient” we are literally editing balances and updating the storage with a concrete set of commands. This happens on-chain and thus a new transaction is also created on-chain as the result of this process.
In Ergo (as in Bitcoin) transactions are created off-chain and the network nodes only verify them. The effects of the transaction on the blockchain state is that input coins (or Boxes in Ergo's parlance) are removed and output boxes are added to the UTXO set.
In the example above we don't use an ErgoScript contract but instead assume a signature check is used as the spending pre-condition. However in more complex application scenarios we of course need to use ErgoScript which is what we are going to discuss next.

From Changing State to Checking Context

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

FlowCard Diagrams

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

Example: Decentralized Exchange (DEX)

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

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

From Diagrams To ErgoScript Contracts

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

Conclusions

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

FlowCards: A Declarative Framework for Development of Ergo dApps

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

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

Live Q&A 22 [Readers Digest]

Hello fellow redditors,

caught quite by surprise Sub_Octavian organized a Live QnA. And judging by the number of comments ... I got some work ahead of me. As always, the "Q" provides a link to the comment chain of the adjacent question. Starting web radio. Let's go:

********************

Q: Could we get a % damage dealt stat in the postbattle screen? Or maybe in-match as well? And the API as well of course ;)
A: It's in our backlog, and thanks for the reminder. I will refresh the discussion in the team :)

Q: Now that IJN AA was further nerfed with the CV/AA Overhaul, can Atago finally get her missing AA, as well as an updated superstructure to match her actual hull?
A: Missing AA? Atago plane kills score is surpassed by only Baltimore, Cleveland, Kutuzov and Wichita, and only by 1-1,4 frags on average, while all other combat stats are absolutely decent. Pre-rework she was roughly in the same spot, and I don't recall her being strongest AA ship on T8. Sorry, there is no justification for buffs at the moment. As for model improvements, we normally do this for older models from time to time, if there are better references and free resources. If there is room for improvement, she will get them some day.

Q: Will WoWs ever get the same treatment WoT did in regards to graphics, performance, and optimization?
A: I think I commented on it a few times. We do not plan to make any complete and total tech overhaul in one huge updates. We do incremental changes. Some FX improvements here, sound improvements there, x64 client there, etc, etc. For now, there is no plan to change it approach. We will update visual, tech and under the hood part from time to time. Your question is valid and good, but for the future, I want to clarify: WoT and WoWS are different teams, studios and even before WoT engine changed, our common engine versions were very different. There is almost zero point in connecting this games from this point of view.

Q: Given the feedback from the testing, what is your opinion of the concept of the Pobeda/Slava? A lot of people don't seem to like a ship that promotes a very passive, sniping playstyle.
A: It's a WIP ship; pretty soon her testing will be stopped, then feedback and data will be studied and then GD will decide what to do with her for then next test stage. With most obvious options being: to continue with the same concept, but change it to be bettemore balanced/better perceived or to try different concept.
Speaking about my personal opinion. I've been hearing "it promotes passive playstyle" all the time, about everything, for years. Anything people don't like, they slap this "passive gameplay" marker on. In reality, it usually does not affect anything a lot. Campers continue to camp, pushers push. But this time I actually 100% agree with your evaluation. It is a true glass sniper cannon. Yamato and Montana can be very good at long range, too, but unlike Slava, they are not useless in CQC and can push.

Q: What is the status on the gun fire bloom change?
A: Same, in dev queue. Unfortunately, it's a game logic component, so it's in the same bin with, like, Priority sector rework or CV autopilot improvements. We will get there, but we're not ready to increase the priority of this feature to emergency (aka drop everything else and do it ASAP), because, at the time all this gun bloom changes were happening, it was obvious (after several weeks) that the impact is really low. For sure, there IS impact, in some particular cases it can be a game changer, and no denying that we're bringing this back as we promised. But right now, other things are just more important and cover much more players. TLDR - Work in progress, sorry for taking so long, will be done as promised.

Q: Are there any plans to adjust the German battleships?, there are multiple different small changes that could be implemented to make them relevant again. They are fun ships but simply not working in the current meta.
A: I cannot back the opinion that German BB are "not working". If we look at different stats, German BB are in the middle of the group on each tier in terms of WR. They may not have stellar absolute avg. damage, but they're contributing to the team success well enough. Their popularity is also very high, even with all other options which are in the game.
There are a few additional factors, though:
  1. Meta changes indeed, and so does feelings and gameplay experience. I am not arguing that German BB gameplay may feel different, most likely, it does (for me personally - no, but again, I appreciate other opinions).
  2. There are quite a few strong premium/coal/freeXP BB on almost every tier, and a lot of skilled players stick to them. E.g Missouri, Musashi and JB are very solid, very popular, and a lot of good players use them for farm regularly. When such ships are in the group, other ships can feel weaker.
All in all, we're not opposed to improve German BB experience while staying within balance. Right now RU BB are being introduced, and they occupy the same slot of CQC BB. Let's see how their stats settle, how they shake down with German BB and then we will address this question one more time. If there is room for improvements, I don't see any single reason not to give them love. Also, I'm a fan of secondary build BBs, so...you can be sure I will be the first to vouch for that :)

Q: Is WG happy with the effect that CV has on Tier 8 matchmaking? T8 ships are helpless against T10 aircraft, and T8 aircraft are helpless against T10 AA. This is punishing for surface ships and CV alike when being bottom tier in a T8 boat is bad enough already.
A: T8 vs T10 MM situation is roughly the same regardless of the class. As stated before, some global MM improvements are being worked on, and no CV-specific changes are currently planned. We want to improve the experience for T8 in general, for all classes.

Q: Could we ever get a soft-cap for only 1 CV per match like you did for T10 but for all tiers or was it the intention from the start to have at least 2 CVs in a match? Maybe a slightly changed cap for 1 minute or so instead of 3. Bottom tier in a double CV game feel really frustrating, not to say about the amount of spotting they can do.
A: We're not against soft cap for 1 CV on T8 in the same way it's implemented for T10. The problem is T8 CV popularity. We update the data from time to time, and overall, when it becomes viable, we will strongly consider doing this cap. Right now it's not going to work, and I actually did a long post about it here: https://www.reddit.com/WorldOfWarships/comments/b62cx7/just_a_small_clarification_on_mm_cv_limits/

Q: What happend to Viribus Unitis, Yahagi and Leone?
A: I mean some ships are just being put aside for some time, until there is a good moment to release them. It's fine, not all WIP content is scheduled to be release immediately after testing.

Q: Are there any plans to update the Gearing’s model? Currently, it’s proportionally wrong and quite a bit wider than it should be (it should have the same width as a Sumner like the Yueyang).
A: We will update old models from time to time, as we recently did with Yamato.

Q: Do you think AP bomb mechanic in general (not just Graf which is already being tested) needs to be changed and explained better as well? Currently its behavior is too extreme and difficult to predict imo. It either deals 15-25k citadel damage which is super frustrating to the receiving side or deals 2-3k overpen damage which is meh from the CV player view. There is also no baseline stat to compare the penetration number of each kind of AP bombs either, unlike HE bombs which is a fixed number.
A: No. We're quite happy with the current base mechanic, and think that it has good skill / reward ratio. What we're concerned about is AP alpha strike potential on some CV, especially while the general playerbase progresses in terms of skill and learns how to use this armament properly. So there may be some, most likely minor, tweaks in future. But the base concept itself, in our opinion, works well.

Q: Is WG happy with the amount of spotting and the more and more reduced value of concealment in the game?
Same question, only longer:
In the days of old with few/no CVs/RadaHydro concealment was very very powerful and a tool that good players could use to play with for interesting and often tense results.
A: Hello,
CV related part:
Not entirely.
That may not be obvious, but the planned 0.8.4 changes, which, basically, affect the squadron speed WILL influence spotting. And for us, these changes are targeted at dpm and spotting equally. The takeoff delay will affect initial spotting, which we do consider a problem as well.
We cannot promise that it will be enough, but:
  1. I can absolutely confirm that in any case, there is new meta, where there IS more spotting overall. We do not consider it a bad thing.
  2. While working on this issue further, we will try hard to use tweaks, not reworking the mechanic. Which means that options like "CV only spots for itself" and "CV spotting has delay like Radar" are not viable for us at the moment, and we will consider them only if absolutely necessary (everything else won't work).
Overall spotting part:
Not entirely.
All factors combined, we are concerned about spotting in the game. We're fine with meta changing, but would like to keep it soft, when possible. Right now we're concentrated on CV part, as obviously CV rework had big and immediate effect, when we're fully happy with it, we will look at everything else.

Q: Can you give us a penetration value of AP bombs? It's really interesting to know. Thanks.
A:
Hosho (Type 99 25 Mod1): 174
Ruyjo (Type 3 25 Mod1 Mk4): 228
Shokaku (Type 2 50 Mark1): 262
Hakuryu (Type 2 80 Mk5 Mod1): 351
Enterprise (M62): 244
GZ (PD 500): 334 (pre buff)
These should be the base values. Please take this into account:
  1. Penetration capability is always the same, it's not affected by anything.
  2. However, bombs interact with effective armor, so angle matters and they even can bounce.
  3. They have normalization. It's base value is bigger than AP shells, but it's applied non-linearly; if the angle is bad, even great normalization won't help.
  4. Aircraft angle and speed affect bomb speed and trajectory (but bombs do not loose penetration from speed!). Which means that for maximum penetration capabilities we must make the drop as close to 90 degrees as possible -> dropping early. For soft targets it may make sense to drop lately because, as with AP shells, for soft targets you don't want overpens and increasing effective armor turns into a benefit.

Q: Are there any plans to add a german coal or steel ship to the armory in the near future?
A: There are always plans to add ships of all nations and all tiers to the game for all currencies. But in Q&A, we do not make such announcements, sorry. The only thing I can say there are some cool German ships planned for the foreseeable future and I look forward to them myself :-) But that's true for other game nations as well.

Q: Has there been any thought given toward allowing 19 pt captains to further specialize in skills(picked by the player) much the same way the special coal/doubloon captains do now? To clarify I mean skills, not special traits that activate when certain conditions are met.
A: Captains "meta" is something we may want to update in the future, but from all "meta" things at the moment, we have higher priorities.

Q: Are there any plans to address the (imho) imbalance between the volume of almost non-stop damage over time ships have to deal with since the CV rework and the very limited (few heals and repair parties with long cooldowns) possibilities a player has to counter DOT damage, given the fact that surface ships can not disengage against a CV like they could against any surface ship (stop shooting to reduce spotting range, take cover, move away) ?
A: Overall CV balancing and AA improvements will affect his anyways. Less plane speed + better AA counterplay = less strikes = less hits = less damage, including DoT. It does not make any sense to do your proposed change until 0.8.4 and further planned changes are made and do their impact.
Also, their damage structure is not so DoT-reliant as you may think. Torps have very nerfed flooding chance, rockets are not stellar either. T10 CV atm have roughly 6% of flooding and 13,5% of fires in their damage structure, and that's the highest value of the class. T10 cruisers do 21% in fires alone.

Q: Regarding AA, would you consider the outcome of this clip to be working as intended? It’s a 20 second clip, just an Atlanta with DFAA vs Tier 6 torpedo bombers.Without giving too much away, would the future planned changes to AA change this interaction in a meaningful way?
A: We're happy with Atlanta herself. From all non CV ships in the game, Atlanta avg plane kills are surpassed only by Minotaur,Worcester and a couple of USN BB. Relatively to the game, Atlanta has an amazing AA.
However, we're not entirely happy about CV-AA interaction globally, especially in regards to priority sector. We want the combination of AA ship/build + skillful priority sector usage to have noticeably more impact on ship's AA defence, and that's what we're working on right now.

Q: Are there any plans on making secondaries more viable as a build?
We now have a pair of US ships that show that a good build can be fun but that's about it. ManSecs is a waste of 4 points for 99% of ships. Between a T9 BB having 5km guns and the Vanguard having the wrong ones it seems to be an area that's been mostly overlooked.
A: Yes. But it is not simple. I doubt we will make significant changes with current settings, and new secondary mechanics obviously will be a long term project, given other things being worked on. I can say this: we want to do something cool with secondaries, but there is no final decision what and when yet. At the moment we do not treat " secondaries being a fun alternative for just a couple of ship lines " an emergency. It is an area of the game we will eventually revisit, along with many others.

Q: I have a question regarding Catapult Fighter consumables. As of now, they seem rather slow to actually attack enemy aircrafts, and also, the full squadron is depleted even when they shoot down a nearly used-up squadron consisting of, say, 2 aircrafts. Is WG happy with the current efficiency of Catapult fighters? Any tweaks to make players feel more protected when using the consumable?
A: Yes, we're happy with the efficiency of this consumable. It does what it was meant to - inflicts losses on enemy squadron or, in some cases, creates area denial. It's more efficient when launched with good timing, it's less efficient when launched late. It's more efficient if CV plays aggressively, it's less efficient if CV plays carefully. TBH, we're fine with its state right now, and our nearest efforts to improve AA protection will be targeted at priority sector mechanic, not at fighters.

Q: What is WG's opinion on presence of skill gap between players in current reworked CVs? I have personally seen fails in current CVs worse than anything I have ever encountered in old CVs.
A: The presence of skill gap is not a problem (good players should be rewarded, bad players should be punished), the question is in the "width" of this gap, and it's effect on the game: on player's personal performance and on the team. Pre rework CV were very different in this aspect from everybody else. And in this aspect, with all data we have, we don't have any doubts that new CV are much much better than old CV.

Q: While I understand specific changes to a module and/or system would be reserved for the Dev Blog, can you update us on the plans for the system as a whole? Approximate timing of the change?
The number of new T10 ships is continually increasing thus the inventory of ships with and without Legendary Modules grows. Would premium ships ever have a Legendary Module opportunity? What about CV’s?
A: That's not about getting in trouble :) As I've hinted a few times, we're at the design stage. It may be completely new system, or complementing system or just "keep these mods and do more of them". Right now there is truly no answer, and the decision is in the process.

Q: Any chance for a setting to disable the in-game chat (apart from system messages like consumable use and the wheel messages)?
A: It's being discussed right now actually, as there are quite a few requests to do it from the players. We will let you know when the decision is made, of course.

Q: Right now CVs feel very removed from the gameplayloop. A lot of the time as a surface player i feel like just a target / NPC for the damage race between the two CVs. This is made worse by there being basically no interaction between CVs. Fighters are buggy as hell and usually just cancel each other out.
A:
  1. We want to add more counterplay, as stated several times in thisn QnA. Please check out my replies about Priority sector.
  2. Fighter cancelling each other is exactly what we want. If you have a fighter ready you can try to cancel enemy fighter. Also, we don't want them to be "press the button to wipe the enemy out immediately". For now we see that they work as they should.
  3. I play the same game, regularly, on various ships classes and tiers. Sorry, but I feel you are blowing this out of proportion. Some issues? Sure. NPC mode? Eh, no, and it is not backed by stats either. CV damage increase with player skill is relarively higher than on other classes, but WR increase is lower. CV as a class influence battle outcome less than other classes and much less than they used to. Also, please read about new AA mechanic. Auras deal very consistent damage. They were much more RNG pre rework.

Q: What are the alternative ways for players to acquire the Admiral Kuznetsov captain after the Victory event? Will there be a permanent campaign for Kuznetsov similar to the campaigns for Yamamoto and Halsey? Given that Kuznetsov has abilities that give a significant advantage over a standard captain, if players who miss out on the campaign cannot get him later on, they would be significantly disadvantaged during combat.
A: It's WIP, but according to the current plan, there will be means to get this commander afterwards, however, not immediately after the event. For exactly the reasons you state: we don't want newer players to miss out good content. What it will be (a campaign? an armory item?) - I cannot confirm now.

Q: Has there been any updates regarding linux players getting warnings and potentially banned?, I know you guys aren't officially supporting linux but the game runs perfectly under wine it's just the warning system causing issues since the last update.
A: We're looking into it, but unfortunately, as Linux is NOT officially supported, I cannot give any guarantees. Sorry :(

Q: Is there a possibility of another captain skill rework. I feel that AA skills should be separated from secondary skills currently as both suffer from their meh performance together and their significant investment away from skills that increase survivability and/or captain skills that increase comfortability.
A: Some updates are more than possible in foreseeable future. Complete rework - highly unlikely this year or even beyond.

Q: I know that balancing is cyclical, and that you're actively working on spotting and CV balance in general (thanks!), but my question is on the DD side of the equation: Are you seeing as significant of an affect on DD's as a class since rework as the population of DD mains is claiming?
A: DD popularity has decreased of course (what's interesting quite a few DD players have become very active with CV). It is on acceptable level, and to be honest, I don't think it's something very special. We had a lot of popularity fluctuations over the years - at some point BB were over dominating and cruisers were nearly obsolete, and even before thet DD were on top. Right now the class distribution is okay (cruisers did big comeback btw), and with a few changes to CV, most likely, DD and CV populations will bounce back a bit more (more DD less CV).
As for DD efficiency, it's definitely fine stats-wise, but we fully understand subjective, situational factor. Hence the upcoming changes to HE bombs for example, the already done nerfs to the rockets, etc, etc.
Balance is cynical, but numbers is not the only thing we care about. Sentiment has huge weight too, and the biggest challenge is to balance these things before balancing the ships :-)

Q: Are there plans to introduce similar things for the AP shells ? Say at 5,10 and 15km where applicable ? That would be extremely useful for certain ships in deciding whether to use AP or not.
A: Not a priority, as unfortunately, AP shells loose penetration with distance non linearly, they have different trajectories, hit at different angles, and normalize. We're not fans of adding super hardcore information to the client, which the bulk of playerbase will never use. On the other hand, adding this information in interactive and digestible form so it actually helps players to make decisions, is a big task. A good one, but very costly. So it sits in back log for now.

Q: Do you think that the binary nature of HE penetration is a problem when it comes to balancing skills like IFHE and small-caliber guns, or do you guys think that its fine and you can balance it regardless?
A: I do not comment on leaks and speculations ;) But answering the main part, we think that core mechanics of HE is fine, and with 99% probability any further improvements will be "tweaking the knobs" rather then "2020 year of HE rework".

Q: Has the dev team considered "changing/nerfing" IFHE by buffing the consistency of small caliber AP a small amount (like lower arming threshold, OR slightly better normalization, OR slightly better bounce angles, etc.) in order to create a competitor to IFHE?
A: Yes, along with many other options, but there is no direction that we're firmly believe in just yet.

Q: Are there any new operations in development?
A: Apart from some..interesting special events - no. Our efforts in terms of game modes will be concentrated more on enriching PvP and making cool events this year.

Q: Is there any chance to increase the punishment for afk and bot at asia server? Since the chinese server stopped update and remained at 0.7.3. There are many players from Chinese server moved to Asia server since last year. Bots are everywhere, You can meet at least 1 bot or afk players per team per match. Situation are even worse at low Tier during morning and midnight server time. It is just not fun to play with such numbers of bot and player who fire once every 5 mins.
A: Yes. And not only for Asia. Actually, we're readdressing our system right now to better detect and better suspend the accounts which looks like "bots". Whether they are bots or just zero-effort farm accounts played by 10 ppl, is not relevant - we know they ruin the experience for fair players. So there will be improvements here in the near future.

Q: Are there any plans to introduce a game mode without carriers anytime soon?
A: No (apart from various events, that can be "no CV", "no BB" and "no whatever class, because it's an event").

Q: Any plans on completely rebalancing Graf Zeppelin, now that its biggest weapon --- speed --- has been nerfed 40 knots? Any plans for further AA/CV balance that you can share at the moment?
A: Question 1: no, the speed boost mechanics is being changed globally and systematically. It's not a GZ nerf, it's a global mechanics nerf affecting all CV in the game. In the meantime, GZ retains her individual quality - high speed, with DB and TB planes having 181kt of base speed while other CV at this tier have it in 130ish range. What's more, her DB are being buffed. Better accuracy, more comfortable attack and, what's IMO even more important, higher bomb speed and penetration. The numbers do not seem huge, but in game it can be a difference between penetrating or not penetrating armor deck, especially against higher tier ships. And we all know that citadel hit is very desirable when you use AP bombs. If GZ will be weak after the changes for some reason, she will be improved in some other way - that's a standard workflow.
Question 2: everything we can share ATM is in Dev Blog.

Q: Special commander Kutznetov has a much less specialised (ship reaches <10% HP) special ability activation threshold. This was because Yamamoto and Halsey’s were considered too specific (score a kraken, ect.).
With this in mind, will there be a revision of Halsey and Yamamoto’s special ability threshold?
Is this activation threshold something we could see in future special commanders of other nations?
A: The idea is that we want to try slightly different concept.
Right now we have guys like Doe Brothers (no super talents, improved skills), Epic Yamamoto and Halsey ( improved skills, super rare and super epic talents), and now we want to try Kuznetsov as "less improved skills, less epic, but easier to trigger talents".
Right now we're not 100% sure of the further developments. But if Kuznetsov is successful, I'm pretty sure there will be more commanders like that for other game nations. At the same time Yamamoto and Halsey future in this case is an open question. Should they be reworked, removing their mega epic effect in favor of less good/easier to trigger? Or should we get the alt.versions? Or maybe all 3 types of commanders will co-exist to suits different tastes :-) We will see.

Q: Have you considered making AA rewarding or at least the investment for AA specs less costly?
It requires a substantial investment to specialise any ship for AA, yet there is next to no control.
A: Yes, and that's kinda in the plan. To reward more for AA control and/or AA loadout. Without making ships like Mino into "I evaporate you in a second before you even notice", preferably.

Q: Will the Yueyang ever be rebalanced to account for the unnecessary nerfs a few patches ago?
A: As any other ship, YY can be changed in the future, but we do not consider the nerf "unnecessary", happy with the result, and there is no reverting planned. YY sits firmly in the middle of T10 DD in terms of damage, WR, frags and other stats. At the same time, YY audience skill curve is not special (as opposed to Daring for example), so her relative performance is also fine. She's the least popular T10 DD, but always was like this, and her popularity is still acceptable to us. She used to be OP, now she's OK. Can it be "more OK" (better) while staying within acceptable balance? Yes, as many other ships, too. So we will consider it for the future updates.

Q:
  1. Citadels that are small in size and are placed in the stern. In the case of the Enterprise almost none existent.
  2. Automatic fire and flood control damage
  3. High resistance to fire and flooding
  4. The automatic movement control moves the CV in reverse. This has the effect of not exposing a citadel that is already hard to get to.
What is the rationale for these design features?
A:
  1. Citadels in the game are being defined according to a specific set of rules. CV citadels follow this set as well, and their citadel placement has nothing to do with rework. From what I see in game and in stats, they can be easily citadeled in most cases.
  2. Already explained long time ago in DevBlog.
  3. Same.
  4. Same.

Q: When will the Midway and Hakuryu get their Legendary Module back? They got frozen after 0.8.0 and currently cannot be used (although they can be earned).
Personaly I would love to see the Midway get its old jets back from the Closed Beta when the Legendary Upgrade gets mounted. Dont know how it should balanced, but it would be cool to look at nonetheless
A: I'm not 100% sure they will, actually. Because in our plans, we want to readdress the Legendary Mod thing overall. Maybe there will be some other system instead. Or maybe there will be changes. There is no exact decision right now; it may turn out that these mods will appear in some time as a part of current system, or they may be replaced (for all ships) with something completely new. Or these systems will co-exist. Sorry, in all fairness, we don't know ourselves right now :-)

Q: In about another 6-8 months, when it is finally admitted that the CV rework has failed, how will WG attempt to repair the damage done?
A: While "never say never" is true (looks at Halloween subs), we don't have any indication that CV rework is a failure. It has some issues, part of which are still to be resolved, it has some negative constructive feedback, and, sorry to say that, I mean no disrespect, it also has some echo-chamber hatred sentiment, which is not really constructive, too.
As you can guess, no developer is interested in making the game worse, less popular, less enjoyable, etc. WoWS is the result for our effort, it's main career project for most of us, and it's huge part of our lives. From all main audience metrics, overall results of CV rework are good. From balance metrics, CV rework is good. Some players being unhappy or salty is of course NOT good, but:
  1. We're addressing the players concerns, and working on feedback points.
  2. We had the gut to rework the class from scratch, and none of us had pink dreams that CV rework would suit absolutely everyone.
If you disagree, fine, everyone is entitled to own opinion. And I apologize if the game is worse for you as a result of out efforts to make it better. Obviously none of us can be happy about it. But in all honesty, I am not going to admit something I don't believe in, while the full picture looks good and the game is alive and kicking. Even if this sub has turned into CV hate fest for some players, when many positive opinions are actively mocked and downvoted.

Q: My clan is one of the top Naval Battle clans in the world. We set the pre-damage star record with 164 stars and put up 245 last week. We have really enjoyed the game mode and how it brings the clan together.
However, the change to damage from base XP had a HUGE side effect last weekend. A strategy I saw was to div in a co-op game with two other players and have them not fire their guns until the player going for the star gets their damage. This makes what was a fun game mode very boring, especially when more players take advantage of this. Can WG either to go back to base XP or only allow Naval Battles to be done in randoms? Thank you.
A: Feedback appreciated, most likely we will get to XP and think about damage more.

Q: Will there ever be high tier operations It would give me great feels to play operation Ten Go as Yamato/Musashi at Leyte or something with Missouri
A: Unfortunately our current efforts are mostly switched to PvP maps and modes, and to thematic events. For now, we're not able to spend any significant resources on Operations, simply because there are things much bigger chunk of playerbase cares about.

Q: Kinda two questions stuffed in one, but. Will there ever be considered doing a BB line split for RN and KM, for Battlecruisers? Having vessels like HMS Renown would be awesome.
A: There is no reason for not adding new interesting lines, but I am not announcing them on QnA ;)

*******

That went quicker than I thought! As always, I have omitted super obvious questions that result in a "This is confidential" answer. Also: If I have forogotten any important question OR a link is broken, let me know.
Enjoy reading!
submitted by Vectoranalysis to WorldOfWarships [link] [comments]

5 Minutes Strategy Binary Options 2020 Step by Step - YouTube Best 5min Binary Options Trading Strategy - YouTube Best Binary Options 5 Min Trading Strategy// Attached With ... 5 minutes binary options strategy 90 - 95% Winning (100% ... Stochastics 5min POWERFUL STRATEGY for Binary Options ... Best 5 Minutes Binary Options Strategy 2020 - The BLW 5 ... Binary Options- Simple and Easy 5 Minute Strategy - YouTube

I am very interested on your 5 min expiry implementation of this strategy, if you are willing to share the indicators and settings, I would love to report how are they doing for me on Nadex Demo. my given idea can use 1min to 30 min and higher time, needs to change settings. Page 1 of 4 - Correlation strategy 5 min accurate signal - posted in 5 Minute Strategies: It is a simple strategy I use as reference for all my trades. To determine 5min candle of eurusd. Call signal 5min: Previous candle-eurgbp bull-eurjpy bull -eurcad bull -euraud bull - eurusd bear. Put signal 5min: Previous candle-gbpusd bear - usdjpy bull- usdcad bull - audusd bear - eurusd bull. Binary Options Edge doesn't retain responsibility for any trading losses you might face as a result of using the data hosted on this site. The data and quotes contained in this website are not provided by exchanges but rather by market makers. So prices may be different from exchange prices and may not be accurate to real time trading prices. They are supplied as a guide to trading rather than ... I am very interested on your 5 min expiry implementation of this strategy, if you are willing to share the indicators and settings, I would love to report how are they doing for me on Nadex Demo. my given idea can use 1min to 30 min and higher time, needs to change settings. Implementation of Kelly System in Binary Options. When using this strategy to invest in binary options, it is advisable that you invest only five percent of your balance in any particular outcome. With a regular broker, this translates to a 5 percent risk against about 3.5 percent return on the investment. Double Red Strategy Binary Options. When a Double Bottom pattern forms under the level 30 in RSI, and then RSI trend crosses level 30 towards the top on a spot where market price starts an uptrend, maybe by a Bullish candle, then a trader can place a Buy order М30 chart shows the same data (the candlestick is red): Finally, Н1 chart completely confirms the signal to open a «down» option ... Hello Friends ! report for 01.05, traded on EUR-USD Timeframe of 5 minutes . My working time frame 5 minutes trading plan day at least 5 + . I work as a fixed amount of the transaction without the participation of "Martin" Results of the day for 5 hours of trading 9 + 3-with the return of the asset 80% net profit was 5+ The plan for the day fulfilled. below is a...

[index] [14078] [4225] [18420] [12520] [3977] [1178] [26455] [27487] [11773] [8940]

5 Minutes Strategy Binary Options 2020 Step by Step - YouTube

Join My Academy 💰Income-Mentor-Box Academy (Signup) http://www.incomementorbox.com/ 👉Income Mentor Box read FULL Review http://www.investing-news.net/i... How I trade 5 Minutes Binary Options with my 5 minutes binary options strategy 90 - 95% Winning (100% profit guaranteed) I get a lot of winning trades and th... 💰💲FULL BEGINNER? Join My PERSONAL TRAINING!💴💵 BLW Trading Academy: http://www.blwtradingacademy.com/ 💲💹Official FREE Telegram Group: https://t.me ... Join My Academy 💰Income-Mentor-Box Academy (Signup) http://www.incomementorbox.com/ 👉Income Mentor Box read FULL Review http://www.investing-news.net/i... Subscribe for more videos like this one! Today we go over one of my most successful strategies- and yet it is perhaps the simplest. Patience is crucial howev... I made this short video step by step with the 5 minute strategy and explaining how to follow its signals. FOREX & BINARY SIGNALS http://nextwavetrading.com/S... Hello Trader Characteristics of Indicator 1. Platform - Metatrader 4. 2. Asset - Any Currency Pair. 3. Candle Timeframe - 1 Min. 4. Expiry Time - 5 min. I Ho...

https://binary-optiontrade.nilotido.ml