Bitcoin Prognose: Block-Halvening 2020 für gewaltigen ...

Fiat Standard vs Bitcoin Standard

Fiat Standard vs Bitcoin Standard submitted by polylunar_ to Bitcoin [link] [comments]

SKRIBBL WORD LIST

Pac-Man
bow
Apple
chest
six pack
nail
tornado
Mickey Mouse
Youtube
lightning
traffic light
waterfall
McDonalds
Donald Trump
Patrick
stop sign
Superman
tooth
sunflower
keyboard
island
Pikachu
Harry Potter
Nintendo Switch
Facebook
eyebrow
Peppa Pig
SpongeBob
Creeper
octopus
church
Eiffel tower
tongue
snowflake
fish
Twitter
pan
Jesus Christ
butt cheeks
jail
Pepsi
hospital
pregnant
thunderstorm
smile
skull
flower
palm tree
Angry Birds
America
lips
cloud
compass
mustache
Captain America
pimple
Easter Bunny
chicken
Elmo
watch
prison
skeleton
arrow
volcano
Minion
school
tie
lighthouse
fountain
Cookie Monster
Iron Man
Santa
blood
river
bar
Mount Everest
chest hair
Gumball
north
water
cactus
treehouse
bridge
short
thumb
beach
mountain
Nike
flag
Paris
eyelash
Shrek
brain
iceberg
fingernail
playground
ice cream
Google
dead
knife
spoon
unibrow
Spiderman
black
graveyard
elbow
golden egg
yellow
Germany
Adidas
nose hair
Deadpool
Homer Simpson
Bart Simpson
rainbow
ruler
building
raindrop
storm
coffee shop
windmill
fidget spinner
yo-yo
ice
legs
tent
mouth
ocean
Fanta
homeless
tablet
muscle
Pinocchio
tear
nose
snow
nostrils
Olaf
belly button
Lion King
car wash
Egypt
Statue of Liberty
Hello Kitty
pinky
Winnie the Pooh
guitar
Hulk
Grinch
Nutella
cold
flagpole
Canada
rainforest
blue
rose
tree
hot
mailbox
Nemo
crab
knee
doghouse
Chrome
cotton candy
Barack Obama
hot chocolate
Michael Jackson
map
Samsung
shoulder
Microsoft
parking
forest
full moon
cherry blossom
apple seed
Donald Duck
leaf
bat
earwax
Italy
finger
seed
lilypad
brush
record
wrist
thunder
gummy
Kirby
fire hydrant
overweight
hot dog
house
fork
pink
Sonic
street
Nasa
arm
fast
tunnel
full
library
pet shop
Yoshi
Russia
drum kit
Android
Finn and Jake
price tag
Tooth Fairy
bus stop
rain
heart
face
tower
bank
cheeks
Batman
speaker
Thor
skinny
electric guitar
belly
cute
ice cream truck
bubble gum
top hat
Pink Panther
hand
bald
freckles
clover
armpit
Japan
thin
traffic
spaghetti
Phineas and Ferb
broken heart
fingertip
funny
poisonous
Wonder Woman
Squidward
Mark Zuckerberg
twig
red
China
dream
Dora
daisy
France
Discord
toenail
positive
forehead
earthquake
iron
Zeus
Mercedes
Big Ben
supermarket
Bugs Bunny
Yin and Yang
drink
rock
drum
piano
white
bench
fall
royal
seashell
Audi
stomach
aquarium
Bitcoin
volleyball
marshmallow
Cat Woman
underground
Green Lantern
bottle flip
toothbrush
globe
sand
zoo
west
puddle
lobster
North Korea
Luigi
bamboo
Great Wall
Kim Jong-un
bad
credit card
swimming pool
Wolverine
head
hair
Yoda
Elsa
turkey
heel
maracas
clean
droplet
cinema
poor
stamp
Africa
whistle
Teletubby
wind
Aladdin
tissue box
fire truck
Usain Bolt
water gun
farm
iPad
well
warm
booger
WhatsApp
Skype
landscape
pine cone
Mexico
slow
organ
fish bowl
teddy bear
John Cena
Frankenstein
tennis racket
gummy bear
Mount Rushmore
swing
Mario
lake
point
vein
cave
smell
chin
desert
scary
Dracula
airport
kiwi
seaweed
incognito
Pluto
statue
hairy
strawberry
low
invisible
blindfold
tuna
controller
Paypal
King Kong
neck
lung
weather
Xbox
tiny
icicle
flashlight
scissors
emoji
strong
saliva
firefighter
salmon
basketball
spring
Tarzan
red carpet
drain
coral reef
nose ring
caterpillar
Wall-e
seat belt
polar bear
Scooby Doo
wave
sea
grass
pancake
park
lipstick
pickaxe
east
grenade
village
Flash
throat
dizzy
Asia
petal
Gru
country
spaceship
restaurant
copy
skin
glue stick
Garfield
equator
blizzard
golden apple
Robin Hood
fast food
barbed wire
Bill Gates
Tower of Pisa
neighborhood
lightsaber
video game
high heels
dirty
flamethrower
pencil sharpener
hill
old
flute
cheek
violin
fireball
spine
bathtub
cell phone
breath
open
Australia
toothpaste
Tails
skyscraper
cowbell
rib
ceiling fan
Eminem
Jimmy Neutron
photo frame
barn
sandstorm
Jackie Chan
Abraham Lincoln
T-rex
pot of gold
KFC
shell
poison
acne
avocado
study
bandana
England
Medusa
scar
Skittles
Pokemon
branch
Dumbo
factory
Hollywood
deep
knuckle
popular
piggy bank
Las Vegas
microphone
Tower Bridge
butterfly
slide
hut
shovel
hamburger
shop
fort
Ikea
planet
border
panda
highway
swamp
tropical
lightbulb
Kermit
headphones
jungle
Reddit
young
trumpet
cheeseburger
gas mask
apartment
manhole
nutcracker
Antarctica
mansion
bunk bed
sunglasses
spray paint
Jack-o-lantern
saltwater
tank
cliff
campfire
palm
pumpkin
elephant
banjo
nature
alley
fireproof
earbuds
crossbow
Elon Musk
quicksand
Playstation
Hawaii
good
corn dog
Gandalf
dock
magic wand
field
Solar System
photograph
ukulele
James Bond
The Beatles
Katy Perry
pirate ship
Poseidon
Netherlands
photographer
Lego
hourglass
glass
path
hotel
ramp
dandelion
Brazil
coral
cigarette
messy
Dexter
valley
parachute
wine glass
matchbox
Morgan Freeman
black hole
midnight
astronaut
paper bag
sand castle
forest fire
hot sauce
social media
William Shakespeare
trash can
fire alarm
lawn mower
nail polish
Band-Aid
Star Wars
clothes hanger
toe
mud
coconut
jaw
bomb
south
firework
sailboat
loading
iPhone
toothpick
BMW
ketchup
fossil
explosion
Finn
Einstein
infinite
dictionary
Photoshop
trombone
clarinet
rubber
saxophone
helicopter
temperature
bus driver
cello
London
newspaper
blackberry
shopping cart
Florida
Daffy Duck
mayonnaise
gummy worm
flying pig
underweight
Crash Bandicoot
bungee jumping
kindergarten
umbrella
hammer
night
laser
glove
square
Morty
firehouse
dynamite
chainsaw
melon
waist
Chewbacca
kidney
stoned
Rick
ticket
skateboard
microwave
television
soil
exam
cocktail
India
Colosseum
missile
hilarious
Popeye
nuke
silo
chemical
museum
Vault boy
adorable
fast forward
firecracker
grandmother
Porky Pig
roadblock
continent
wrinkle
shaving cream
Northern Lights
tug
London Eye
Israel
shipwreck
xylophone
motorcycle
diamond
root
coffee
princess
Oreo
goldfish
wizard
chocolate
garbage
ladybug
shotgun
kazoo
Minecraft
video
message
lily
fisherman
cucumber
password
western
ambulance
doorknob
glowstick
makeup
barbecue
jazz
hedgehog
bark
tombstone
coast
pitchfork
Christmas
opera
office
insect
hunger
download
hairbrush
blueberry
cookie jar
canyon
Happy Meal
high five
fern
quarter
peninsula
imagination
microscope
table tennis
whisper
fly swatter
pencil case
harmonica
Family Guy
New Zealand
apple pie
warehouse
cookie
USB
jellyfish
bubble
battery
fireman
pizza
angry
taco
harp
alcohol
pound
bedtime
megaphone
husband
oval
rail
stab
dwarf
milkshake
witch
bakery
president
weak
second
sushi
mall
complete
hip hop
slippery
horizon
prawn
plumber
blowfish
Madagascar
Europe
bazooka
pogo stick
Terminator
Hercules
notification
snowball fight
high score
Kung Fu
Lady Gaga
geography
sledgehammer
bear trap
sky
cheese
vine
clown
catfish
snowman
bowl
waffle
vegetable
hook
shadow
dinosaur
lane
dance
scarf
cabin
Tweety
bookshelf
swordfish
skyline
base
straw
biscuit
Greece
bleach
pepper
reflection
universe
skateboarder
triplets
gold chain
electric car
policeman
electricity
mother
Bambi
croissant
Ireland
sandbox
stadium
depressed
Johnny Bravo
silverware
raspberry
dandruff
Scotland
comic book
cylinder
Milky Way
taxi driver
magic trick
sunrise
popcorn
eat
cola
cake
pond
mushroom
rocket
surfboard
baby
cape
glasses
sunburn
chef
gate
charger
crack
mohawk
triangle
carpet
dessert
taser
afro
cobra
ringtone
cockroach
levitate
mailman
rockstar
lyrics
grumpy
stand
Norway
binoculars
nightclub
puppet
novel
injection
thief
pray
chandelier
exercise
lava lamp
lap
massage
thermometer
golf cart
postcard
bell pepper
bed bug
paintball
Notch
yogurt
graffiti
burglar
butler
seafood
Sydney Opera House
Susan Wojcicki
parents
bed sheet
Leonardo da Vinci
intersection
palace
shrub
lumberjack
relationship
observatory
junk food
eye
log
dice
bicycle
pineapple
camera
circle
lemonade
soda
comb
cube
Doritos
love
table
honey
lighter
broccoli
fireplace
drive
Titanic
backpack
emerald
giraffe
world
internet
kitten
volume
Spain
daughter
armor
noob
rectangle
driver
raccoon
bacon
lady
bull
camping
poppy
snowball
farmer
lasso
breakfast
oxygen
milkman
caveman
laboratory
bandage
neighbor
Cupid
Sudoku
wedding
seagull
spatula
atom
dew
fortress
vegetarian
ivy
snowboard
conversation
treasure
chopsticks
garlic
vacuum
swimsuit
divorce
advertisement
vuvuzela
Mr Bean
Fred Flintstone
pet food
upgrade
voodoo
punishment
Charlie Chaplin
Rome
graduation
beatbox
communism
yeti
ear
dots
octagon
kite
lion
winner
muffin
cupcake
unicorn
smoke
lime
monster
Mars
moss
summer
lollipop
coffin
paint
lottery
wife
pirate
sandwich
lantern
seahorse
Cuba
archer
sweat
deodorant
plank
Steam
birthday
submarine
zombie
casino
gas
stove
helmet
mosquito
ponytail
corpse
subway
spy
jump rope
baguette
grin
centipede
gorilla
website
text
workplace
bookmark
anglerfish
wireless
Zorro
sports
abstract
detective
Amsterdam
elevator
chimney
reindeer
Singapore
perfume
soldier
bodyguard
magnifier
freezer
radiation
assassin
yawn
backbone
disaster
giant
pillow fight
grasshopper
Vin Diesel
geyser
burrito
celebrity
Lasagna
Pumba
karaoke
hypnotize
platypus
Leonardo DiCaprio
bird bath
battleship
back pain
rapper
werewolf
Black Friday
cathedral
Sherlock Holmes
ABBA
hard hat
sword
mirror
toilet
eggplant
jelly
hero
starfish
bread
snail
person
plunger
computer
nosebleed
goat
joker
sponge
mop
owl
beef
portal
genie
crocodile
murderer
magic
pine
winter
robber
pepperoni
shoebox
fog
screen
son
folder
mask
Goofy
Mercury
zipline
wall
dragonfly
zipper
meatball
slingshot
Pringles
circus
mammoth
nugget
mousetrap
recycling
revolver
champion
zigzag
meat
drought
vodka
notepad
porcupine
tuba
hacker
broomstick
kitchen
cheesecake
satellite
JayZ
squirrel
leprechaun
jello
gangster
raincoat
eyeshadow
shopping
gardener
scythe
portrait
jackhammer
allergy
honeycomb
headache
Miniclip
Mona Lisa
cheetah
virtual reality
virus
Argentina
blanket
military
headband
superpower
language
handshake
reptile
thirst
fake teeth
duct tape
macaroni
color-blind
comfortable
Robbie Rotten
coast guard
cab driver
pistachio
Angelina Jolie
autograph
sea lion
Morse code
clickbait
star
girl
lemon
alarm
shoe
soap
button
kiss
grave
telephone
fridge
katana
switch
eraser
signature
pasta
flamingo
crayon
puzzle
hard
juice
socks
crystal
telescope
galaxy
squid
tattoo
bowling
lamb
silver
lid
taxi
basket
step
stapler
pigeon
zoom
teacher
holiday
score
Tetris
frame
garden
stage
unicycle
cream
sombrero
error
battle
starfruit
hamster
chalk
spiral
bounce
hairspray
lizard
victory
balance
hexagon
Ferrari
MTV
network
weapon
fist fight
vault
mattress
viola
birch
stereo
Jenga
plug
chihuahua
plow
pavement
wart
ribbon
otter
magazine
Bomberman
vaccine
elder
Romania
champagne
semicircle
Suez Canal
Mr Meeseeks
villain
inside
spade
gravedigger
Bruce Lee
gentle
stingray
can opener
funeral
jet ski
wheelbarrow
thug
undo
fabulous
space suit
cappuccino
Minotaur
skydiving
cheerleader
Stone Age
Chinatown
razorblade
crawl space
cauldron
trick shot
Steve Jobs
audience
time machine
sewing machine
face paint
truck driver
x-ray
fly
salt
spider
boy
dollar
turtle
book
chain
dolphin
sing
milk
wing
pencil
snake
scream
toast
vomit
salad
radio
potion
dominoes
balloon
monkey
trophy
feather
leash
loser
bite
notebook
happy
Mummy
sneeze
koala
tired
sick
pipe
jalapeno
diaper
deer
priest
youtuber
boomerang
pro
ruby
hop
hopscotch
barcode
vote
wrench
tissue
doll
clownfish
halo
Monday
tentacle
grid
Uranus
oil
scarecrow
tarantula
germ
glow
haircut
Vatican
tape
judge
cell
diagonal
science
mustard
fur
janitor
ballerina
pike
nun
chime
tuxedo
Cerberus
panpipes
surface
coal
knot
willow
pajamas
fizz
student
eclipse
asteroid
Portugal
pigsty
brand
crowbar
chimpanzee
Chuck Norris
raft
carnival
treadmill
professor
tricycle
apocalypse
vitamin
orchestra
groom
cringe
knight
litter box
macho
brownie
hummingbird
Hula Hoop
motorbike
type
catapult
take off
wake up
concert
floppy disk
BMX
bulldozer
manicure
brainwash
William Wallace
guinea pig
motherboard
wheel
brick
egg
lava
queen
gold
God
ladder
coin
laptop
toaster
butter
bag
doctor
sit
tennis
half
Bible
noodle
golf
eagle
cash
vampire
sweater
father
remote
safe
jeans
darts
graph
nothing
dagger
stone
wig
cupboard
minute
match
slime
garage
tomb
soup
bathroom
llama
shampoo
swan
frown
toolbox
jacket
adult
crate
quill
spin
waiter
mint
kangaroo
captain
loot
maid
shoelace
luggage
cage
bagpipes
loaf
aircraft
shelf
safari
afterlife
napkin
steam
coach
slope
marigold
Mozart
bumper
Asterix
vanilla
papaya
ostrich
failure
scoop
tangerine
firefly
centaur
harbor
uniform
Beethoven
Intel
moth
Spartacus
fluid
acid
sparkles
talent show
ski jump
polo
ravioli
delivery
woodpecker
logo
Stegosaurus
diss track
Darwin Watterson
filmmaker
silence
dashboard
echo
windshield
Home Alone
tablecloth
backflip
headboard
licorice
sunshade
Picasso
airbag
water cycle
meatloaf
insomnia
broom
whale
pie
demon
bed
braces
fence
orange
sleep
gift
Popsicle
spear
zebra
Saturn
maze
chess
wire
angel
skates
pyramid
shower
claw
hell
goal
bottle
dress
walk
AC/DC
tampon
goatee
prince
flask
cut
cord
roof
movie
ash
tiger
player
magician
wool
saddle
cowboy
derp
suitcase
sugar
nest
anchor
onion
magma
limbo
collar
mole
bingo
walnut
wealth
security
leader
melt
Gandhi
arch
toy
turd
scientist
hippo
glue
kneel
orbit
below
totem
health
towel
diet
crow
addiction
minigolf
clay
boar
navy
butcher
trigger
referee
bruise
translate
yearbook
confused
engine
poke
wreath
omelet
gravity
bride
godfather
flu
accordion
engineer
cocoon
minivan
bean bag
antivirus
billiards
rake
cement
cauliflower
espresso
violence
blender
chew
bartender
witness
hobbit
corkscrew
chameleon
cymbal
Excalibur
grapefruit
action
outside
guillotine
timpani
frostbite
leave
Mont Blanc
palette
electrician
fitness trainer
journalist
fashion designer
bucket
penguin
sheep
torch
robot
peanut
UFO
belt
Earth
magnet
dragon
soccer
desk
search
seal
scribble
gender
food
anvil
crust
bean
hockey
pot
pretzel
needle
blimp
plate
drool
frog
basement
idea
bracelet
cork
sauce
gang
sprinkler
shout
morning
poodle
karate
bagel
wolf
sausage
heat
wasp
calendar
tadpole
religion
hose
sleeve
acorn
sting
market
marble
comet
pain
cloth
drawer
orca
hurdle
pinball
narwhal
pollution
metal
race
end
razor
dollhouse
distance
prism
pub
lotion
vanish
vulture
beanie
burp
periscope
cousin
customer
label
mold
kebab
beaver
spark
meme
pudding
almond
mafia
gasp
nightmare
mermaid
season
gasoline
evening
eel
cast
hive
beetle
diploma
jeep
bulge
wrestler
Anubis
mascot
spinach
hieroglyph
anaconda
handicap
walrus
blacksmith
robin
reception
invasion
fencing
sphinx
evolution
brunette
traveler
jaguar
diagram
hovercraft
parade
dome
credit
tow truck
shallow
vlogger
veterinarian
furniture
commercial
cyborg
scent
defense
accident
marathon
demonstration
NASCAR
Velociraptor
pharmacist
Xerox
gentleman
dough
rhinoceros
air conditioner
poop
clock
carrot
cherry
candle
boots
target
wine
die
moon
airplane
think
pause
pill
pocket
Easter
horse
child
lamp
pillow
yolk
potato
pickle
nurse
ham
ninja
screw
board
pin
lettuce
console
climb
goose
bill
tortoise
sink
ski
glitter
miner
parrot
clap
spit
wiggle
peacock
roll
ballet
ceiling
celebrate
blind
yacht
addition
flock
powder
paddle
harpoon
kraken
baboon
antenna
classroom
bronze
writer
Obelix
touch
sensei
rest
puma
dent
shake
goblin
laundry
cloak
detonate
Neptune
cotton
generator
canary
horsewhip
racecar
Croatia
tip
cardboard
commander
seasick
anthill
vinegar
hippie
dentist
animation
Slinky
wallpaper
pendulum
vertical
chestplate
anime
beanstalk
survivor
florist
faucet
spore
risk
wonderland
wrestling
hazelnut
cushion
W-LAN
mayor
community
raisin
udder
oyster
sew
hazard
curry
pastry
mime
victim
mechanic
hibernate
bouncer
Iron Giant
floodlight
pear
sad
paw
space
bullet
skribbl.io
shirt
cow
worm
king
tea
truck
pants
hashtag
DNA
bird
Monster
beer
curtain
tire
nachos
bear
cricket
teapot
nerd
deaf
fruit
meteorite
rice
sniper
sale
gnome
shock
shape
alligator
meal
nickel
party
hurt
Segway
Mr. Bean
banker
cartoon
double
hammock
juggle
pope
leak
room
throne
hoof
radar
wound
luck
swag
panther
flush
Venus
disease
fortune
porch
machine
pilot
copper
mantis
keg
biology
wax
gloss
leech
sculpture
pelican
trapdoor
plague
quilt
yardstick
lounge
teaspoon
broadcast
uncle
comedian
mannequin
peasant
streamer
oar
drama
cornfield
carnivore
wingnut
vent
cabinet
vacation
applause
vision
radish
picnic
Skrillex
jester
preach
armadillo
hyena
librarian
interview
sauna
surgeon
dishrag
manatee
symphony
queue
industry
Atlantis
excavator
canister
model
flight attendant
ghost
pig
key
banana
tomato
axe
line
present
duck
alien
peas
gem
web
grapes
corn
can
fairy
camel
paper
beak
corner
penny
dig
link
donkey
fox
rug
drip
hunter
horn
purse
gumball
pony
musket
flea
kettle
rooster
balcony
seesaw
stork
dinner
greed
bait
duel
trap
heist
origami
skunk
coaster
leather
socket
fireside
cannon
ram
filter
alpaca
Zelda
condiment
server
antelope
emu
chestnut
dalmatian
swarm
sloth
reality
Darwin
torpedo
toucan
pedal
tabletop
frosting
bellow
vortex
bayonet
margarine
orchid
beet
journey
slam
marmalade
employer
stylus
spoiler
repeat
tiramisu
cuckoo
collapse
eskimo
assault
orangutan
wrapping
albatross
mothball
evaporate
turnip
puffin
reeds
receptionist
impact
dispenser
nutshell
procrastination
architect
programmer
bricklayer
boat
bell
ring
fries
money
chair
door
bee
tail
ball
mouse
rat
window
peace
nut
blush
page
toad
hug
ace
tractor
peach
whisk
hen
day
shy
lawyer
rewind
tripod
trailer
hermit
welder
festival
punk
handle
protest
lens
attic
foil
promotion
work
limousine
patriot
badger
studio
athlete
quokka
trend
pinwheel
gravel
fabric
lemur
provoke
rune
display
nail file
embers
asymmetry
actor
carpenter
aristocrat
Zuma
chinchilla
archaeologist
apple
hat
sun
box
cat
cup
train
bunny
sound
run
barrel
barber
grill
read
family
moose
boil
printer
poster
sledge
nutmeg
heading
cruise
pillar
retail
monk
spool
catalog
scuba
anteater
pensioner
coyote
vise
bobsled
purity
tailor
meerkat
weasel
invention
lynx
kendama
zeppelin
patient
gladiator
slump
Capricorn
baklava
prune
stress
crucible
hitchhiker
election
caviar
marmot
hair roller
pistol
cone
ant
lock
hanger
cap
Mr. Meeseeks
comedy
coat
tourist
tickle
facade
shrew
diva
patio
apricot
spelunker
parakeet
barbarian
tumor
figurine
desperate
landlord
bus
mug
dog
shark
abyss
betray HUH SO HARD
submitted by Temporary_Scratch_14 to skribbl [link] [comments]

An Exploration of Bitcoin Transactions, the Blockchain, and Miners

An Exploration of Bitcoin Transactions, the Blockchain, and Miners submitted by willcosgrove to Bitcoin [link] [comments]

Default English word list

Alright so, I took the default database from there https://skribbliohints.github.io/ and with the help of html, I extracted the words to a list separated by commas. It's useful when you want to translate those words into your native language.
Word of advice, when using google translate, do not put all words at once there, it can rapidly worsen the translation.
(And there is a last thing. Their algorithm of picking only custom words is not working really good, at least for me. Meaning that I often get duplicates, despite having a list this big and without duplicates. I'm still trying to find some solution to this, so if somebody is experiencing this as well, share the knowledge please, I will do the same.)
SOLUTION: Thanks for the reply from PepegaWR who identified the cause. I also tested it and there seems to be a custom words limit of 5000 characters. The easiest way in my opinion is to shuffle the words before each session to minimize the impact. Also thanks to the flynger who had the same idea before me :)
Finally, here it is, enjoy the scribbling ^^ :

ABBA, AC/DC, Abraham Lincoln, Adidas, Africa, Aladdin, America, Amsterdam, Android, Angelina Jolie, Angry Birds, Antarctica, Anubis, Apple, Argentina, Asia, Asterix, Atlantis, Audi, Australia, BMW, BMX, Bambi, Band-Aid, Barack Obama, Bart Simpson, Batman, Beethoven, Bible, Big Ben, Bill Gates, Bitcoin, Black Friday, Bomberman, Brazil, Bruce Lee, Bugs Bunny, Canada, Capricorn, Captain America, Cat Woman, Cerberus, Charlie Chaplin, Chewbacca, China, Chinatown, Christmas, Chrome, Chuck Norris, Colosseum, Cookie Monster, Crash Bandicoot, Creeper, Croatia, Cuba, Cupid, DNA, Daffy Duck, Darwin, Darwin Watterson, Deadpool, Dexter, Discord, Donald Duck, Donald Trump, Dora, Doritos, Dracula, Dumbo, Earth, Easter, Easter Bunny, Egypt, Eiffel tower, Einstein, Elmo, Elon Musk, Elsa, Eminem, England, Europe, Excalibur, Facebook, Family Guy, Fanta, Ferrari, Finn, Finn and Jake, Flash, Florida, France, Frankenstein, Fred Flintstone, Gandalf, Gandhi, Garfield, Germany, God, Goofy, Google, Great Wall, Greece, Green Lantern, Grinch, Gru, Gumball, Happy Meal, Harry Potter, Hawaii, Hello Kitty, Hercules, Hollywood, Home Alone, Homer Simpson, Hula Hoop, Hulk, Ikea, India, Intel, Ireland, Iron Giant, Iron Man, Israel, Italy, Jack-o-lantern, Jackie Chan, James Bond, Japan, JayZ, Jenga, Jesus Christ, Jimmy Neutron, John Cena, Johnny Bravo, KFC, Katy Perry, Kermit, Kim Jong-un, King Kong, Kirby, Kung Fu, Lady Gaga, Las Vegas, Lasagna, Lego, Leonardo DiCaprio, Leonardo da Vinci, Lion King, London, London Eye, Luigi, MTV, Madagascar, Mario, Mark Zuckerberg, Mars, McDonalds, Medusa, Mercedes, Mercury, Mexico, Michael Jackson, Mickey Mouse, Microsoft, Milky Way, Minecraft, Miniclip, Minion, Minotaur, Mona Lisa, Monday, Monster, Mont Blanc, Morgan Freeman, Morse code, Morty, Mount Everest, Mount Rushmore, Mozart, Mr. Bean, Mr. Meeseeks, Mr Bean, Mr Meeseeks, Mummy, NASCAR, Nasa, Nemo, Neptune, Netherlands, New Zealand, Nike, Nintendo Switch, North Korea, Northern Lights, Norway, Notch, Nutella, Obelix, Olaf, Oreo, Pac-Man, Paris, Patrick, Paypal, Peppa Pig, Pepsi, Phineas and Ferb, Photoshop, Picasso, Pikachu, Pink Panther, Pinocchio, Playstation, Pluto, Pokemon, Popeye, Popsicle, Porky Pig, Portugal, Poseidon, Pringles, Pumba, Reddit, Rick, Robbie Rotten, Robin Hood, Romania, Rome, Russia, Samsung, Santa, Saturn, Scooby Doo, Scotland, Segway, Sherlock Holmes, Shrek, Singapore, Skittles, Skrillex, Skype, Slinky, Solar System, Sonic, Spain, Spartacus, Spiderman, SpongeBob, Squidward, Star Wars, Statue of Liberty, Steam, Stegosaurus, Steve Jobs, Stone Age, Sudoku, Suez Canal, Superman, Susan Wojcicki, Sydney Opera House, T-rex, Tails, Tarzan, Teletubby, Terminator, Tetris, The Beatles, Thor, Titanic, Tooth Fairy, Tower Bridge, Tower of Pisa, Tweety, Twitter, UFO, USB, Uranus, Usain Bolt, Vatican, Vault boy, Velociraptor, Venus, Vin Diesel, W-LAN, Wall-e, WhatsApp, William Shakespeare, William Wallace, Winnie the Pooh, Wolverine, Wonder Woman, Xbox, Xerox, Yin and Yang, Yoda, Yoshi, Youtube, Zelda, Zeus, Zorro, Zuma, abstract, abyss, accident, accordion, ace, acid, acne, acorn, action, actor, addiction, addition, adorable, adult, advertisement, afro, afterlife, air conditioner, airbag, aircraft, airplane, airport, alarm, albatross, alcohol, alien, allergy, alley, alligator, almond, alpaca, ambulance, anaconda, anchor, angel, anglerfish, angry, animation, anime, ant, anteater, antelope, antenna, anthill, antivirus, anvil, apartment, apocalypse, applause, apple, apple pie, apple seed, apricot, aquarium, arch, archaeologist, archer, architect, aristocrat, arm, armadillo, armor, armpit, arrow, ash, assassin, assault, asteroid, astronaut, asymmetry, athlete, atom, attic, audience, autograph, avocado, axe, baboon, baby, back pain, backbone, backflip, backpack, bacon, bad, badger, bag, bagel, bagpipes, baguette, bait, bakery, baklava, balance, balcony, bald, ball, ballerina, ballet, balloon, bamboo, banana, bandage, bandana, banjo, bank, banker, bar, barbarian, barbecue, barbed wire, barber, barcode, bark, barn, barrel, bartender, base, basement, basket, basketball, bat, bathroom, bathtub, battery, battle, battleship, bayonet, bazooka, beach, beak, bean, bean bag, beanie, beanstalk, bear, bear trap, beatbox, beaver, bed, bed bug, bed sheet, bedtime, bee, beef, beer, beet, beetle, bell, bell pepper, bellow, belly, belly button, below, belt, bench, betray, bicycle, bill, billiards, bingo, binoculars, biology, birch, bird, bird bath, birthday, biscuit, bite, black, black hole, blackberry, blacksmith, blanket, bleach, blender, blimp, blind, blindfold, blizzard, blood, blowfish, blue, blueberry, blush, boar, board, boat, bobsled, bodyguard, boil, bomb, booger, book, bookmark, bookshelf, boomerang, boots, border, bottle, bottle flip, bounce, bouncer, bow, bowl, bowling, box, boy, bracelet, braces, brain, brainwash, branch, brand, bread, breakfast, breath, brick, bricklayer, bride, bridge, broadcast, broccoli, broken heart, bronze, broom, broomstick, brownie, bruise, brunette, brush, bubble, bubble gum, bucket, building, bulge, bull, bulldozer, bullet, bumper, bungee jumping, bunk bed, bunny, burglar, burp, burrito, bus, bus driver, bus stop, butcher, butler, butt cheeks, butter, butterfly, button, cab driver, cabin, cabinet, cactus, cage, cake, calendar, camel, camera, campfire, camping, can, can opener, canary, candle, canister, cannon, canyon, cap, cape, cappuccino, captain, car wash, cardboard, carnival, carnivore, carpenter, carpet, carrot, cartoon, cash, casino, cast, cat, catalog, catapult, caterpillar, catfish, cathedral, cauldron, cauliflower, cave, caveman, caviar, ceiling, ceiling fan, celebrate, celebrity, cell, cell phone, cello, cement, centaur, centipede, chain, chainsaw, chair, chalk, chameleon, champagne, champion, chandelier, charger, cheek, cheeks, cheerleader, cheese, cheeseburger, cheesecake, cheetah, chef, chemical, cherry, cherry blossom, chess, chest, chest hair, chestnut, chestplate, chew, chicken, chihuahua, child, chime, chimney, chimpanzee, chin, chinchilla, chocolate, chopsticks, church, cicada cigarette, cinema, circle, circus, clap, clarinet, classroom, claw, clay, clean, clickbait, cliff, climb, cloak, clock, cloth, clothes hanger, cloud, clover, clown, clownfish, coach, coal, coast, coast guard, coaster, coat, cobra, cockroach, cocktail, coconut, cocoon, coffee, coffee shop, coffin, coin, cola, cold, collapse, collar, color-blind, comb, comedian, comedy, comet, comfortable, comic book, commander, commercial, communism, community, compass, complete, computer, concert, condiment, cone, confused, console, continent, controller, conversation, cookie, cookie jar, copper, copy, coral, coral reef, cord, cork, corkscrew, corn, corn dog, corner, cornfield, corpse, cotton, cotton candy, country, cousin, cow, cowbell, cowboy, coyote, crab, crack, crate, crawl space, crayon, cream, credit, credit card, cricket, cringe, crocodile, croissant, crossbow, crow, crowbar, crucible, cruise, crust, crystal, cube, cuckoo, cucumber, cup, cupboard, cupcake, curry, curtain, cushion, customer, cut, cute, cyborg, cylinder, cymbal, dagger, daisy, dalmatian, dance, dandelion, dandruff, darts, dashboard, daughter, day, dead, deaf, deep, deer, defense, delivery, demon, demonstration, dent, dentist, deodorant, depressed, derp, desert, desk, desperate, dessert, detective, detonate, dew, diagonal, diagram, diamond, diaper, dice, dictionary, die, diet, dig, dinner, dinosaur, diploma, dirty, disaster, disease, dishrag, dispenser, display, diss track, distance, diva, divorce, dizzy, dock, doctor, dog, doghouse, doll, dollar, dollhouse, dolphin, dome, dominoes, donkey, door, doorknob, dots, double, dough, download, dragon, dragonfly, drain, drama, drawer, dream, dress, drink, drip, drive, driver, drool, droplet, drought, drum, drum kit, duck, duct tape, duel, dwarf, dynamite, eagle, ear, earbuds, earthquake, earwax, east, eat, echo, eclipse, eel, egg, eggplant, elbow, elder, election, electric car, electric guitar, electrician, electricity, elephant, elevator, embers, emerald, emoji, employer, emu, end, engine, engineer, equator, eraser, error, eskimo, espresso, evaporate, evening, evolution, exam, excavator, exercise, explosion, eye, eyebrow, eyelash, eye shadow, fabric, fabulous, facade, face, face paint, factory, failure, fairy, fake teeth, fall, family, farm, farmer, fashion designer, fast, fast food, fast forward, father, faucet, feather, fence, fencing, fern, festival, fidget spinner, field, figurine, filmmaker, filter, finger, fingernail, fingertip, fire alarm, fire hydrant, fire truck, fireball, firecracker, firefighter, firefly, firehouse, fireman, fireplace, fireproof, fireside, firework, fish, fish bowl, fisherman, fist fight, fitness trainer, fizz, flag, flagpole, flamethrower, flamingo, flashlight, flask, flea, flight attendant, flock, floodlight, floppy disk, florist, flower, flu, fluid, flush, flute, fly, fly swatter, flying pig, fog, foil, folder, food, forehead, forest, forest fire, fork, fort, fortress, fortune, fossil, fountain, fox, frame, freckles, freezer, fridge, fries, frog, frostbite, frosting, frown, fruit, full, full moon, funeral, funny, fur, furniture, galaxy, gang, gangster, garage, garbage, garden, gardener, garlic, gas, gas mask, gasoline, gasp, gate, gem, gender, generator, genie, gentle, gentleman, geography, germ, geyser, ghost, giant, gift, giraffe, girl, gladiator, glass, glasses, glitter, globe, gloss, glove, glow, glowstick, glue, glue stick, gnome, goal, goat, goatee, goblin, godfather, gold, gold chain, golden apple, golden egg, goldfish, golf, golf cart, good, goose, gorilla, graduation, graffiti, grandmother, grapefruit, grapes, graph, grass, grasshopper, grave, gravedigger, gravel, graveyard, gravity, greed, grenade, grid, grill, grin, groom, grumpy, guillotine, guinea pig, guitar, gumball, gummy, gummy bear, gummy worm, hacker, hair, hair roller, hairbrush, haircut, hairspray, hairy, half, halo, ham, hamburger, hammer, hammock, hamster, hand, handicap, handle, handshake, hanger, happy, harbor, hard, hard hat, harmonica, harp, harpoon, hashtag, hat, hazard, hazelnut, head, headache, headband, headboard, heading, headphones, health, heart, heat, hedgehog, heel, heist, helicopter, hell, helmet, hen, hermit, hero, hexagon, hibernate, hieroglyph, high five, high heels, high score, highway, hilarious, hill, hip hop, hippie, hippo, hitchhiker, hive, hobbit, hockey, holiday, homeless, honey, honeycomb, hoof, hook, hop, hopscotch, horizon, horn, horse, horsewhip, hose, hospital, hot, hot chocolate, hot dog, hot sauce, hotel, hourglass, house, hovercraft, hug, hummingbird, hunger, hunter, hurdle, hurt, husband, hut, hyena, hypnotize, iPad, iPhone, ice, ice cream, ice cream truck, iceberg, icicle, idea, imagination, impact, incognito, industry, infinite, injection, insect, inside, insomnia, internet, intersection, interview, invasion, invention, invisible, iron, island, ivy, jacket, jackhammer, jaguar, jail, jalapeno, janitor, jaw, jazz, jeans, jeep, jello, jelly, jellyfish, jester, jet ski, joker, journalist, journey, judge, juggle, juice, jump rope, jungle, junk food, kangaroo, karaoke, karate, katana, kazoo, kebab, keg, kendama, ketchup, kettle, key, keyboard, kidney, kindergarten, king, kiss, kitchen, kite, kitten, kiwi, knee, kneel, knife, knight, knot, knuckle, koala, kraken, label, laboratory, ladder, lady, ladybug, lake, lamb, lamp, landlord, landscape, lane, language, lantern, lap, laptop, laser, lasso, laundry, lava, lava lamp, lawn mower, lawyer, leader, leaf, leak, leash, leather, leave, leech, legs, lemon, lemonade, lemur, lens, leprechaun, lettuce, levitate, librarian, library, licorice, lid, light bulb, lighter, lighthouse, lightning, lightsaber, lily, lilypad, limbo, lime, limousine, line, link, lion, lips, lipstick, litter box, lizard, llama, loading, loaf, lobster, lock, log, logo, lollipop, loot, loser, lotion, lottery, lounge, love, low, luck, luggage, lumberjack, lung, lynx, lyrics, macaroni, machine, macho, mafia, magazine, magic, magic trick, magic wand, magician, magma, magnet, magnifier, maid, mailbox, mailman, makeup, mall, mammoth, manatee, manhole, manicure, mannequin, mansion, mantis, map, maracas, marathon, marble, margarine, marigold, market, marmalade, marmot, marshmallow, mascot, mask, massage, match, matchbox, mattress, mayonnaise, mayor, maze, meal, meat, meatball, meatloaf, mechanic, meerkat, megaphone, melon, melt, meme, mermaid, message, messy, metal, meteorite, microphone, microscope, microwave, midnight, military, milk, milkman, milkshake, mime, miner, minigolf, minivan, mint, minute, mirror, missile, model, mohawk, mold, mole, money, monk, monkey, monster, moon, moose, mop, morning, mosquito, moss, moth, mothball, mother, motherboard, motorbike, motorcycle, mountain, mouse, mousetrap, mouth, movie, mud, muffin, mug, murderer, muscle, museum, mushroom, musket, mustache, mustard, nachos, nail, nail file, nail polish, napkin, narwhal, nature, navy, neck, needle, neighbor, neighborhood, nerd, nest, network, newspaper, nickel, night, nightclub, nightmare, ninja, noob, noodle, north, nose, nose hair, nose ring, nosebleed, nostrils, notebook, notepad, nothing, notification, novel, nugget, nuke, nun, nurse, nut, nutcracker, nutmeg, nutshell, oar, observatory, ocean, octagon, octopus, office, oil, old, omelet, onion, open, opera, orange, orangutan, orbit, orca, orchestra, orchid, organ, origami, ostrich, otter, outside, oval, overweight, owl, oxygen, oyster, paddle, page, pain, paint, paintball, pajamas, palace, palette, palm, palm tree, pan, pancake, panda, panpipes, panther, pants, papaya, paper, paper bag, parachute, parade, parakeet, parents, park, parking, parrot, party, password, pasta, pastry, path, patient, patio, patriot, pause, pavement, paw, peace, peach, peacock, peanut, pear, peas, peasant, pedal, pelican, pencil, pencil case, pencil sharpener, pendulum, penguin, peninsula, penny, pensioner, pepper, pepperoni, perfume, periscope, person, pet food, pet shop, petal, pharmacist, photo frame, photograph, photographer, piano, pickaxe, pickle, picnic, pie, pig, pigeon, piggy bank, pigsty, pike, pill, pillar, pillow, pillow fight, pilot, pimple, pin, pinball, pine, pine cone, pineapple, pink, pinky, pinwheel, pipe, pirate, pirate ship, pistachio, pistol, pitchfork, pizza, plague, planet, plank, plate, platypus, player, playground, plow, plug, plumber, plunger, pocket, pogo stick, point, poison, poisonous, poke, polar bear, policeman, pollution, polo, pond, pony, ponytail, poodle, poop, poor, popcorn, pope, poppy, popular, porch, porcupine, portal, portrait, positive, postcard, poster, pot, pot of gold, potato, potion, pound, powder, prawn, pray, preach, pregnant, present, president, pretzel, price tag, priest, prince, princess, printer, prism, prison, pro, procrastination, professor, programmer, promotion, protest, provoke, prune, pub, pudding, puddle, puffin, puma, pumpkin, punishment, punk, puppet, purity, purse, puzzle, pyramid, quarter, queen, queue, quicksand, quill, quilt, quokka, raccoon, race, racecar, radar, radiation, radio, radish, raft, rail, rain, rainbow, raincoat, raindrop, rainforest, raisin, rake, ram, ramp, rapper, raspberry, rat, ravioli, razor, razorblade, read, reality, reception, receptionist, record, rectangle, recycling, red, red carpet, reeds, referee, reflection, reindeer, relationship, religion, remote, repeat, reptile, rest, restaurant, retail, revolver, rewind, rhinoceros, rib, ribbon, rice, ring, ringtone, risk, river, roadblock, robber, robin, robot, rock, rocket, rockstar, roll, roof, room, rooster, root, rose, royal, rubber, ruby, rug, ruler, run, rune, sad, saddle, safari, safe, sailboat, salad, sale, saliva, salmon, salt, saltwater, sand, sand castle, sandbox, sandstorm, sandwich, satellite, sauce, sauna, sausage, saxophone, scar, scarecrow, scarf, scary, scent, school, science, scientist, scissors, scoop, score, scream, screen, screw, scribble, scuba, sculpture, scythe, sea, sea lion, seafood, seagull, seahorse, seal, search, seashell, seasick, season, seat belt, seaweed, second, security, seed, seesaw, semicircle, sensei, server, sew, sewing machine, shadow, shake, shallow, shampoo, shape, shark, shaving cream, sheep, shelf, shell, shipwreck, shirt, shock, shoe, shoebox, shoelace, shop, shopping, shopping cart, short, shotgun, shoulder, shout, shovel, shower, shrew, shrub, shy, sick, signature, silence, silo, silver, silverware, sing, sink, sit, six pack, skateboard, skateboarder, skates, skeleton, ski, ski jump, skin, skinny, skribbl.io, skull, skunk, sky, skydiving, skyline, skyscraper, slam, sledge, sledgehammer, sleep, sleeve, slide, slime, slingshot, slippery, slope, sloth, slow, slump, smell, smile, smoke, snail, snake, sneeze, sniper, snow, snowball, snowball fight, snowboard, snowflake, snowman, soap, soccer, social media, socket, socks, soda, soil, soldier, sombrero, son, sound, soup, south, space, space suit, spaceship, spade, spaghetti, spark, sparkles, spatula, speaker, spear, spelunker, sphinx, spider, spin, spinach, spine, spiral, spit, spoiler, sponge, spool, spoon, spore, sports, spray paint, spring, sprinkler, spy, square, squid, squirrel, stab, stadium, stage, stamp, stand, stapler, star, starfish, starfruit, statue, steam, step, stereo, sting, stingray, stomach, stone, stoned, stop sign, stork, storm, stove, straw, strawberry, streamer, street, stress, strong, student, studio, study, stylus, submarine, subway, sugar, suitcase, summer, sun, sunburn, sunflower, sunglasses, sunrise, sunshade, supermarket, superpower, surface, surfboard, surgeon, survivor, sushi, swag, swamp, swan, swarm, sweat, sweater, swimming pool, swimsuit, swing, switch, sword, swordfish, symphony, table, table tennis, tablecloth, tablet, tabletop, taco, tadpole, tail, tailor, take off, talent show, tampon, tangerine, tank, tape, tarantula, target, taser, tattoo, taxi, taxi driver, tea, teacher, teapot, tear, teaspoon, teddy bear, telephone, telescope, television, temperature, tennis, tennis racket, tent, tentacle, text, thermometer, thief, thin, think, thirst, throat, throne, thug, thumb, thunder, thunderstorm, ticket, tickle, tie, tiger, time machine, timpani, tiny, tip, tiramisu, tire, tired, tissue, tissue box, toad, toast, toaster, toe, toenail, toilet, tomato, tomb, tombstone, tongue, toolbox, tooth, toothbrush, toothpaste, toothpick, top hat, torch, tornado, torpedo, tortoise, totem, toucan, touch, tourist, tow truck, towel, tower, toy, tractor, traffic, traffic light, trailer, train, translate, trap, trapdoor, trash can, traveler, treadmill, treasure, tree, treehouse, trend, triangle, trick shot, tricycle, trigger, triplets, tripod, trombone, trophy, tropical, truck, truck driver, trumpet, tuba, tug, tumor, tuna, tunnel, turd, turkey, turnip, turtle, tuxedo, twig, type, udder, ukulele, umbrella, uncle, underground, underweight, undo, unibrow, unicorn, unicycle, uniform, universe, upgrade, vacation, vaccine, vacuum, valley, vampire, vanilla, vanish, vault, vegetable, vegetarian, vein, vent, vertical, veterinarian, victim, victory, video, video game, village, villain, vine, vinegar, viola, violence, violin, virtual reality, virus, vise, vision, vitamin, vlogger, vodka, volcano, volleyball, volume, vomit, voodoo, vortex, vote, vulture, vuvuzela, waffle, waist, waiter, wake up, walk, wall, wallpaper, walnut, walrus, warehouse, warm, wart, wasp, watch, water, water cycle, water gun, waterfall, wave, wax, weak, wealth, weapon, weasel, weather, web, website, wedding, welder, well, werewolf, west, western, whale, wheel, wheelbarrow, whisk, whisper, whistle, white, wife, wig, wiggle, willow, wind, windmill, window, windshield, wine, wine glass, wing, wingnut, winner, winter, wire, wireless, witch, witness, wizard, wolf, wonderland, woodpecker, wool, work, workplace, world, worm, wound, wrapping, wreath, wrench, wrestler, wrestling, wrinkle, wrist, writer, x-ray, xylophone, yacht, yardstick, yawn, yearbook, yellow, yeti, yo-yo, yogurt, yolk, young, youtuber, zebra, zeppelin, zigzag, zipline, zipper, zombie, zoo, zoom,
submitted by StaroSVK to skribbl [link] [comments]

Bull market is back… Another wave of hacker attacks starts again?

Bull market is back… Another wave of hacker attacks starts again?

The picture from COINDESK related reports
On Aug. 2, Ethereum Classic Labs (ETC Labs) made an important announcement on ETC blockchain. ETC Labs said due to network attack, Ethereum Classic suffered a reorganization on August 1st. This has been the second attack on the Ethereum Classic Network this year.
Did renting-power cause the problem again?
In this ETC incident, one of the miners mined a large number of blocks offline. When the miner went online, due to its high computing power, and some versions of mining software did not support large-scale blockchain mergers, the consensus failed. Therefore, the entire network was out of sync, which produced an effect similar to a 51% attack. Finally, it caused the reorganization of 3693 blocks, starting at 10904147. The deposit and withdrawal between the exchanges and mining pools had to be suspended for troubleshooting during this period.
Media report shows that the blockchain reorganization may be caused by a miner (or a mining pool) disconnected during mining. Although it has been restored to normal after 15 hours of repair, it does reflect the vulnerability of the Proof of Work (PoW) network: once the computing power of the network is insufficient, the performance of one single mining pool can affect the entire network, which is neither distributed nor secure for the blockchain. Neither does it have efficiency.
At present, most consensus algorithms of blockchains are using PoW, which has been adopted over 10 years. In PoW, each miner solves a hashing problem. The probability to solve the problem successfully is proportional to the ratio of the miner’s hash power to the total hash power of mainnet.
Although PoW has been running for a long time, the attack model against PoW is very straightforward to understand, and has attracted people’s attention for a long time: such an attack, also known as double-spending attack, may happen when an attacker possesses 51% of the overall network hash power. The attacker can roll back any blocks in the blockchain by creating a longer and more difficult chain and as a result, modify the transaction information.
Since hash power can be rented to launch attacks, some top 30 projects have suffered from such attacks. In addition to this interference, the main attack method is through the computing power market such as Nice Hash. Hackers can rent hashpower to facilitate their attacks, which allows the computing power to rise rapidly in a short time and rewrite information. In January of this year, the Ethereum Classic was attacked once, and it was also the case that hackers can migrate computing power from the fiercely competitive Bitcoin and Ethereum, and use it to attack smaller projects, such as ETH Classic.

The picture shows the cost of attacking ETH Classic. It can be seen that it costs only $6,634 to attack ETH Classic for one hour.
The security of one network is no longer limited by whether miners within the main net take more than 51% of the total hash power, rather it is determined by whether the benevolent (non-hackers) miners take more than 51% of the total hash power from the pool of projects that use similar consensus algorithm. For example, the hash power of Ethereum is 176 TH/s and that of Ethereum Classic is 9 TH/s. In this way, if one diverts some hash power from Ethereum (176 TH/s) to Ethereum Classic, then one can easily launch a double-spending attack to Ethereum Classic. The hash power ratio for this attack between the two projects is 9/176 = 5.2%, which is a tiny number.

https://preview.redd.it/qj57vgmgb9f51.png?width=699&format=png&auto=webp&s=39c1efc3645f268dbf1c73e1b373d532d5461006
As one of the top 30 blockchain projects, Ethereum Classic has been attacked several times. Therefore, those small and medium-sized projects with low hash power and up-and-coming future projects are facing great potential risks. This is the reason that many emerging public chain projects abandon PoW and adopt PoS.
Proof of Stake (PoS) can prevent 51% attack but has problems of its own
In addition to PoW consensus, another well-adopted consensus algorithm is Proof of Stake (PoS). The fundamental concept is that the one who holds more tokens has the right to create the blocks. This is similar to shareholders in the stock market. The token holders also have the opportunities to get rewards. The advantages of PoS are: (i) the algorithm avoids wasting energy like that in PoW calculation; and (ii) its design determines that the PoS will not be subjected to 51% hash power attack since the algorithm requires the miner to possess tokens in order to modify the ledger. In this way, 51% attack becomes costly and meaningless.

https://preview.redd.it/rf65o1vhb9f51.png?width=685&format=png&auto=webp&s=9d7a9f9dab6ce823a224e91afa9d116310cf27e1
In terms of disadvantages, nodes face the problem of accessibility. PoS requires a permission to enter the network and nodes cannot enter and exit freely and thus lacks openness. It can easily be forked. In the long run, the algorithm is short of decentralization, and leads to the Matthew effect of accumulated advantages whereby miners with more tokens will receive more rewards and perpetuate the cycle.
More importantly, the current PoS consensus has not been verified for long-term reliability. Whether it can be as stable as the PoW system is yet to be verified. For some of the PoW public chains that are already launched, if they want to switch consensus, they need to do hard fork, which divides communities and carries out a long consensus upgrade and through which Ethereum is undergoing. Is there a safer and better solution?
QuarkChain Provide THE Solution: High TPS Protection + PoSW Consensus
For new-born projects, and some small or medium-sized projects, they all are facing the problem of power attack. For PoW-based chains, there are always some chains with lower hash power than others (ETC vs. ETH, BCH vs BTC), and thus the risk of attack is increased. In addition, the interoperability among the chains, such as cross-chain operation, is also a problem. In response, QuarkChain has designed a series of mechanisms to solve this problem. This can be summed up as a two-layer structure with a calculation power allocation and Proof of Staked Work (PoSW) consensus.
First of all, there is a layer of sharding, which can be considered as some parallel chains. Each sharding chain handles the transactions relatively independently. Such design forms the basis to ensure the performance of the entire system. To avoid security issues caused by the dilution of the hash power, we also have a root chain. The blocks of the root chain do not contain transactions, but are responsible for verifying the transactions of each shard. Relying on the hash power distribution algorithm, the hash power of the root chain will always account for 51% of the net. Each shard, on the other hand, packages their transactions according to their own consensus and transaction models.
Moreover, QuarkChain relies on flexibility that allows each shard to have different consensus and transaction models. Someone who wants to launch a double-spending attack on a shard that is already contained in the root chain must attack the block on the root chain, which requires calling the 51% hash power of the root chain. That is, if there are vertical field projects that open new shards on QuarkChain, even with insufficient hash power, an attacker must first attack the root chain if he or she wants to attack a new shard. The root chain has maintained more than 51% of the network’s hash power, which makes the attack very difficult.

https://preview.redd.it/rxpohs7jb9f51.png?width=674&format=png&auto=webp&s=e2df1307a1753542472f2b6da88e7a4022b30884

As illustrated in the diagram, if the attacker wants to attack the QuarkChain network, one would need to attack the shard and the root chain simultaneously.
PoW has achieved a high level of decentralization and has been verified for its stability for a long time. Combining PoW with the staking capability for PoS would make use of the advantages of both consensus mechanisms. That is what QuarkChain’s PoSW achieves exactly.
PoSW, which is Proof of Staked Work, is exclusively developed by QuarkChain and runs on shards. PoSW allows miners to enjoy the benefits of lower mining difficulty by staking original tokens (currently it’s 20 times lower). Conversely, if someone malicious with a high hash power and does not stake tokens on QuarkChain, he will be punishable by receiving 20 times the difficulty of the hash power, which increases the cost of attack. If the attacker stakes tokens in order to reduce the cost of attack, he/she needs to stake the corresponding amount of tokens, which may cost even more. Thus, the whole network is more secure.
Taking Ethereum Classics (ETC) as an example, if ETC uses the PoSW consensus, if there was another double-spending attack similar to the one in January, the attacker will need at least 110Th/s hash power or 650320 ETC (worth $3.2 million, and 8 TH/s hash power) to create this attack, which is far greater than the cost of the current attack on the network (8Th/s hash power) and revenue (219500 ETC).
Relying on multiple sets of security mechanisms, QuarkChain ensures its own security, while providing security for new shards and small and medium-sized projects. Its high level of flexibility also allows the projects to support different types of ledger models, transaction models, virtual machines, and token economics. Such great degrees of security and flexibility will facilitate the blockchain ecosystem to accelerate growth of innovative blockchain applications.
Learn more about QuarkChain
Website https://www.quarkchain.io
Telegram https://t.me/quarkchainio
Twitter https://twitter.com/Quark_Chain
Medium https://medium.com/quarkchain-official
Reddit https://www.reddit.com/quarkchainio/
Community https://community.quarkchain.io/
submitted by QuarkChain to quarkchainio [link] [comments]

Review and Prospect of Crypto Economy-Development and Evolution of Consensus Mechanism (1)

Review and Prospect of Crypto Economy-Development and Evolution of Consensus Mechanism (1)

https://preview.redd.it/7skleasc80a51.png?width=553&format=png&auto=webp&s=fc18cee10bff7b65d5b02487885d936d23382fc8
Table 1 Classification of consensus system
Source: Yuan Yong, Ni Xiaochun, Zeng Shuai, Wang Feiyue, "Development Status and Prospect of Blockchain Consensus Algorithm"
Figure 4 Evolution of consensus algorithm

Figure 4 Evolution of consensus algorithm
Source: Network data

Foreword
The consensus mechanism is one of the important elements of the blockchain and the core rule of the normal operation of the distributed ledger. It is mainly used to solve the trust problem between people and determine who is responsible for generating new blocks and maintaining the effective unification of the system in the blockchain system. Thus, it has become an everlasting research hot topic in blockchain.
This article starts with the concept and role of the consensus mechanism. First, it enables the reader to have a preliminary understanding of the consensus mechanism as a whole; then starting with the two armies and the Byzantine general problem, the evolution of the consensus mechanism is introduced in the order of the time when the consensus mechanism is proposed; Then, it briefly introduces the current mainstream consensus mechanism from three aspects of concept, working principle and representative project, and compares the advantages and disadvantages of the mainstream consensus mechanism; finally, it gives suggestions on how to choose a consensus mechanism for blockchain projects and pointed out the possibility of the future development of the consensus mechanism.
Contents
First, concept and function of the consensus mechanism
1.1 Concept: The core rules for the normal operation of distributed ledgers
1.2 Role: Solve the trust problem and decide the generation and maintenance of new blocks
1.2.1 Used to solve the trust problem between people
1.2.2 Used to decide who is responsible for generating new blocks and maintaining effective unity in the blockchain system
1.3 Mainstream model of consensus algorithm
Second, the origin of the consensus mechanism
2.1 The two armies and the Byzantine generals
2.1.1 The two armies problem
2.1.2 The Byzantine generals problem
2.2 Development history of consensus mechanism
2.2.1 Classification of consensus mechanism
2.2.2 Development frontier of consensus mechanism
Third, Common Consensus System
Fourth, Selection of consensus mechanism and summary of current situation
4.1 How to choose a consensus mechanism that suits you
4.1.1 Determine whether the final result is important
4.1.2 Determine how fast the application process needs to be
4.1.2 Determining the degree to which the application requires for decentralization
4.1.3 Determine whether the system can be terminated
4.1.4 Select a suitable consensus algorithm after weighing the advantages and disadvantages
4.2 Future development of consensus mechanism
Chapter 1 Concept and Function of Consensus Mechanism
1.1 Concept: The core rules for the normal operation of distributed ledgers
Since most cryptocurrencies use decentralized blockchain design, nodes are scattered and parallel everywhere, so a system must be designed to maintain the order and fairness of the system's operation, unify the version of the blockchain, and reward users maintaining the blockchain and punish malicious harmers. Such a system must rely on some way to prove that who has obtained the packaging rights (or accounting rights) of a blockchain and can obtain the reward for packaging this block; or who intends to harm , and will receive certain penalty. Such system is consensus mechanism.
1.2 Role: Solve the trust problem and decide the generation and maintenance of new blocks
1.2.1 Used to solve the trust problem between people
The reason why the consensus mechanism can be at the core of the blockchain technology is that it has formulated a set of rules from the perspective of cryptographic technologies such as asymmetric encryption and time stamping. All participants must comply with this rules. And theese rules are transparent, and cannot be modified artificially. Therefore, without the endorsement of a third-party authority, it can also mobilize nodes across the network to jointly monitor, record all transactions, and publish them in the form of codes, effectively achieving valuable information transfer, solving or more precisely, greatly improving the trust problem between two unrelated strangers who do not trust each other. After all, trusting the objective technology is less risky than trusting a subjective individual.
1.2.2 Used to decide who is responsible for generating new blocks and maintaining effective unity in the blockchain system
On the other hand, in the blockchain system, due to the high network latency of the peer-to-peer network, the sequence of transactions observed by each node is different. To solve this, the consensus mechanism can be used to reach consensus on transactions order within a short period of time to decide who is responsible for generating new blocks in the blockchain system, and to maintain the effective unity of the blockchain.
1.3 The mainstream model of consensus algorithm
The blockchain system is built on the P2P network, and the set of all nodes can be recorded as PP, generally divided into ordinary nodes that produce data or transactions, and"miner" nodes (denoted as M) responsible for mining operations, like verifying, packaging, and updating the data generated by ordinary nodes or transactions. The functions of the two types of nodes may be overlapped; miner nodes usually participate in the consensus competition process in general, and will select certain representative nodes and replace them to participant in the consensus process and compete for accounting rights in specific algorithms. The collection of these representative nodes is recorded as DD; the accounting nodes selected through the consensus process are recorded as AA. The consensus process is repeated in accordance with the round, and each round of the consensus process generally reselects the accounting node for the round . The core of the consensus process is the "select leader" and "accounting" two parts. In the specific operation process, each round can be divided into four stages: Leader election, Block generation, Data validation and Chain updating namely accounting). As shown in Figure 1, the input of the consensus process is the transaction or data generated and verified by the data node, and the output is the encapsulated data block and updated blockchain. The four stages are executed repeatedly, and each execution round will generate a new block.
Stage 1: Leader election
The election is the core of the consensus process, that is, the process of selecting the accounting node AA from all the miner node sets MM: we can use the formula f(M)→f(M)→AA to represent the election process, where the function ff represents the specific implementation of the consensus algorithm. Generally speaking, |A|=1,|A|=1, that is, the only miner node is finally selected to keep accounts.
Stage 2: Block generation
The accounting node selected in the first stage packages the transactions or data generated by all nodes PP in the current time period into a block according to a specific strategy, and broadcasts the generated new block to all miner nodes MM or their representative nodes DD. These transactions or data are usually sorted according to various factors such as block capacity, transaction fees, transaction waiting time, etc., and then packaged into new blocks in sequence. The block generation strategy is a key factor in the performance of the blockchain system, and it also exposes the strategic behavior of miners such as greedy transactions packaging and selfish mining.
Stage 3: Verification
After receiving the broadcasted new block, the miner node MM or the representative node DD will verify the correctness and rationality of the transactions or data encapsulated in the block. If the new block is approved by most verification/representative nodes, the block will be updated to the blockchain as the next block.
Stage 4: On-Chain
The accounting node adds new blocks to the main chain to form a complete and longer chain from the genesis block to the latest block. If there are multiple fork chains on the main chain, the main chain needs to be based on the consensus algorithm judging criteria to choose one of the appropriate fork chain as the main chain.
Chapter 2 The Origin of Consensus Mechanism
2.1 The two armies problems and the Byzantium generals problem
2.1.1 The two armies


Figure 2 Schematic diagram of the two armed forces
Selected from Yuan Yong, Ni Xiaochun, Zeng Shuai, Wang Feiyue, "Development Status and Prospect of Blockchain Consensus Algorithm", Journal of Automation, 2018, 44(11): 2011-2022
As shown in the figure, the 1st and 2nd units of the Blue Army are stationed on two sides of the slope, and cannot communicate remotely between each other. While the White Army is just stationed in the middle of the two Blue Army units. Suppose that the White Army is stronger than either of the two Blue Army units, but it is not as strong as the two Blue Army units combined. If the two units of the Blue Army want to jointly attack the White Army at the same time, they need to communicate with each other, but the White Army is stationed in the middle of them. It is impossible to confirm whether the messengers of two Blue Army units have sent the attack signal to each other, let alone the tampering of the messages. In this case, due to the inability to fully confirm with each other, ultimately no effective consensus can be reached between the two Blue Army units, rendering the "paradox of the two armies".
2.1.2 The Byzantine generals problem


Figure 3 Diagram of the Byzantine generals' problem
Due to the vast territory of the Byzantine roman empire at that time, in order to better achieve the purpose of defense, troops were scattered around the empire, and each army was far apart, and only messengers could deliver messages. During the war, all generals must reach an agreement, or decide whether to attack the enemy based on the majority principle. However, since it is completely dependent on people, if there is a situation where the general rebels or the messenger delivers the wrong message, how can it ensure that the loyal generals can reach agreement without being influenced by the rebels is a problem which was called the Byzantine problem.
The two armies problems and the Byzantine generals problem are all elaborating the same problem: in the case of unreliable information exchange, it is very difficult to reach consensus and coordinate action. The Byzantine general problem is more like a generalization of the "paradox of the two armies".
From the perspective of the computer network, the two armies problem and the Byzantine problem are common contents of computer network courses: the direct communication between two nodes on the network may fail, so the TCP protocol cannot completely guarantee the consistence between the two terminal networks. However, the consensus mechanism can use economic incentives and other methods to reduce this uncertainty to a level acceptable to most people.
It is precisely because of the two armies problem and the Byzantine problem that the consensus mechanism has begun to show its value.
2.2 Development history of consensus mechanism
2.2.1 Classification of consensus mechanism
Because different types of blockchain projects have different requirements for information recording and block generation, and as the consensus mechanism improves due to the development of blockchain technology, there are currently more than 30 consensus mechanisms. These consensus mechanisms can be divided into two categories according to their Byzantine fault tolerance performance: Byzantine fault tolerance system and non-Byzantine fault tolerance system.

Table 1 Classification of consensus mechanism
Source: Yuan Yong, Ni Xiaochun, Zeng Shuai, Wang Feiyue, "Development Status and Prospect of Blockchain Consensus Algorithm"
2.2.2 Development frontier of consensus mechanism
-Development of consensus algorithm
According to the proposed time of the consensus algorithm, we can see relatively clearly the development of the consensus algorithm.
Source: Network data

Figure 4 Development frontier of consensus algorithm

Figure 5 Historical evolution of blockchain consensus algorithm
Source: Yuan Yong, Ni Xiaochun, Zeng Shuai, Wang Feiyue, "Development Status and Prospect of Blockchain Consensus Algorithm"
The consensus algorithm has laid the foundation for the blockchain consensus mechanism. Initially, the research of consensus algorithms was mainly used by computer scientists and computer professors to improve the spam problem or conduct academic discussions.
For example, in 1993, American computer scientist and Harvard professor Cynthia Dwork first proposed the idea of proof of work in order to solve the spam problem; in 1997, the British cryptographer Adam Back also independently proposed to solve the spam problem by use of the mechanism of proof of work for hashing cash and published officially in 2002; in 1999, Markus Jakobsson officially proposed the concept of "proof of work", which laid the foundation for the subsequent design of Satoshi Nakamoto's Bitcoin consensus mechanism.
Next lecture: Chapter 3 Detailed Explanation of Consensus Mechanism Technology
CelesOS
As the first DPOW financial blockchain operating system, CelesOS adopts consensus mechanism 3.0 to break through the "impossible triangle". It provides both high TPS and decentralization. Committed to creating a financial blockchain operating system that embraces regulation, providing services for financial institutions and the development of applications on the regulation chain, and developing a role and consensus eco-system regulation level agreement for regulation.
The CelesOS team is committed to building a bridge between blockchain and regulatory agencies / finance industry. We believe that only blockchain technology that cooperates with regulators will have a bright future and strive to achieve this goal.
📷Website
https://www.celesos.com/
📷 Telegram
https://t.me/celeschain
📷 Twitter
https://twitter.com/CelesChain
📷 Reddit
https://www.reddit.com/useCelesOS
📷 Medium
https://medium.com/@celesos
📷 Facebook
https://www.facebook.com/CelesOS1
📷 Youtube
https://www.youtube.com/channel/UC1Xsd8wU957D-R8RQVZPfGA
submitted by CelesOS to u/CelesOS [link] [comments]

List of moderately difficult skribbl words for your new friend group (1200+ words)

That is to say that this list contains words that this list contains words that:
  1. Usually aren't instantly guess-able (like star, apple, or Nike).
  2. Can be played with a group of acquaintances (I play with a group of interns at work to blow off time)
Created this list by modifying an existing difficult word list we found online and adding a bunch of new words. If you see a stupid difficult word, it was probably a word from the existing difficult word list that I forgot to remove. (amicable and reimbursement were the type of bs I removed lol).
abraham lincoln, accordion, accounting, acre, actor, adidas, advertisement, air conditioner, aircraft carrier, airport security, alarm clock, alcohol, alert, alice in wonderland, alphabet, altitude, amusement park, angel, angle, angry, ankle, apathetic, apathy, apparatus, applause, application, apron, archaeologist, archer, armada, arrows, art gallery, ashamed, asteroid, athlete, atlantis, atlas, atmosphere, attack, attic, audi, aunt, austin powers, australia, author, avalanche, avocado, award, baby, baby-sitter, back flip, back seat, baggage, baguette, baker, balance beam, bald, balloon, bamboo, banister, barbershop, barney, baseboards, bat, beans, beanstalk, beard, bed and breakfast, bedbug, beer pong, belt, beluga whale, berlin wall, bible, biceps, bikini, binder, biohazard, biology, birthday, biscuit, bisexual, bitcoin, black hole, blacksmith, bleach, blizzard, blueprint, bluetooth, blunt, blush, boa constrictor, bobsled, bonnet, book, bookend, bookstore, border, boromir, bottle cap, boulevard, boundary, bow tie, bowling, boxing, braces, brain, brainstorm, brand, bride, bride wig, bruise, brunette, bubble, bubble bath, bucket, buckle, buffalo, bugs bunny, bulldog, bumble bee, bunny, burrito, bus, bushel, butterfly, buzz lightyear, cabin, cable car, cadaver, cake, calculator, calendar, calf, calm, camera, cannon, cape, captain, captain america, car, car accident, carat, cardboard, carnival, carpenter, carpet, cartography, cartoon, cartoonist, castaway, castle, cat, catalog, cattle, cd, ceiling, cell, cellar, centimetre, centipede, century, chain mail, chain saw, chair, champion, chandelier, channel, chaos, charger, chariot, chariot racing, check, cheerleader, cheerleader dust, chef, chemical, cherub, chess, chevrolet, chick-fil-a, chicken coop, chicken legs, chicken nugget, chime, chimney, china, chisel, chord, church, circus tent, clamp, classroom, cleaning spray, cliff, cliff diving, climate, clique, cloak, clog, clown, clue, coach, coast, cockpit, coconut, coffee, coil, comedian, comfy, commercial, community, companion, company, compare, comparison, compromise, computer, computer monitor, con, confidant, confide, consent, constrictor, convenience store, conversation, convertible, conveyor belt, copyright, cord, corduroy, coronavirus, correct, cot, country, county fair, courthouse, cousin, cowboy, coworker, cramp, crane, cranium, crate, crayon, cream, creator, credit, crew, crib, crime, crisp, criticize, crop duster, crow's nest, cruise, cruise ship, crumbs, crust, cubicle, cubit, cupcake, curtain, cushion, customer, cutlass, czar, dab, daffy duck, dance, danger, darth vader, darts, dashboard, daughter, dead end, deadpool, deceive, decipher, deep, default, defect, degree, deliver, demanding, demon, dent, dentist, deodorant, depth, descendant, destruction, detail, detective, diagonal, dice, dictate, disco, disc jockey, discovery, disgust, dismantle, distraction, ditch, diver, diversify, diversity, diving, divorce, dizzy, dodge ball, dog, dolphin, donald trump, doorbell, doppelganger, dorsal, double, doubloon, doubt, doubtful, download, downpour, dragon, drain, dream, dream works, dress shirt, drift, drip, dripping, drive-through, drought, drowning, drugstore, dryer, dryer sheet, dryer sheets, dugout, dumbbell, dumbo, dust, dust bunny, duvet, earache, earmuffs, earthquake, economics, edge, edit, education, eel, effect, egg, eiffel tower, eighteen-wheeler, electrical outlet, elf, elope, emigrate, emotions, emperor, employee, enemy, engaged, equation, error, eureka, everglades, evolution, exam, exercise, exhibition, expired, explore, exponential, extension, extension cord, eyeball, fabric, factory, fad, fade, fake flowers, family tree, fan, fast food, faucet, feather, feeder road, feeling, ferris wheel, fiddle, figment, finding nemo, firefighter, firefox, fireman, fireman pole, fireplace, fireside, fireworks, first class, first mate, fish bone, fishing, fizz, flag, flat, flavor, flight, flip flops, flock, florist, flotsam, flowchart, flower, flu, flute, flutter, flying saucer, fog, foil, food court, football player, forklift, form, forrest gump, fossil, fowl, fragment, frame, fresh water, freshwater, friction, fries, front, frost, fuel, full, full moon, fun, fun house, funnel, fur, galaxy, gallon, gallop, game, gamer, garden, garden hose, gas station, gasoline, gavel, gentleman, geologist, germ, germany, geyser, giant, ginger, giraffe, gladiator, glasses, glitter, glue, glue stick, goalkeeper, goatee, goblin, gold, gold medal, golden retriever, gondola, good-bye, government, gown, graduation, grain, grandpa, gratitude, graveyard, gravity, great-grandfather, grenade, grill, grim reaper, groom, groot, group, guess, guillotine, gumball, guru, gymnast, hail, hair dryer, haircut, half, hand soap, handful, handle, hang, hang glider, hang ten, harry potter, hawaii, hay wagon, hearse, heater, heaven, helmet, hermit crab, high heel, high tops, highchair, hitler, hockey, homework, honk, hoodies, hoop, hopscotch, hot, hot dog, hot fuzz, hot tub, hotel, houseboat, human, humidity, hunter, hurdle, husband, hut, hydrant, hydrogen, hypothermia, ice, ice cream cone, ice fishing, icicle, idea, igloo, illuminati, implode, important, improve, in-law, incisor, income, income tax, index, inertia, infect, inglorious bastards, inside out, insurance, interception, interference, interject, internet, invent, invisible, invitation, iron man, ironic, irrational, irrigation, isaac newton, island, ivy, ivy full, jackhammer, japan, jaw, jazz, jedi, jellyfish, jet lag, jig, jigsaw, joke, joker, journal, juggle, jump rope, jungle, junk, junk drawer, junk mail, justice, kangaroo, ketchup, kill bill, killer, kilogram, kim possible, kiss, kitten, kiwi, kit-kat, kneel, knight, koala, lace, lady bug, ladybug, lamp, lance, landfill, landlord, lap, laptop, last, laundry detergent, layover, leak, leap year, learn, leather, lebron james, lecture, legolas, leprechaun, letter, letter opener, lettuce, level, lice, lichen, lie, lifeguard, lifejacket, lifestyle, light, lightning, lightning mcqueen, lightsaber, limit, lion, lipstick, living room, lobster, logo, loiterer, lollipop, loonie, lord of the rings, lottery, love, loveseat, loyalty, lullaby, lumberjack, lumberyard, lunar eclipse, lunar rover, lung, lyrics, macaroni, machete, machine, macho, magnet, mailbox, makeup, mammoth, manatee, mark zuckerberg, martian, mascot, mascot fireman, mask, mast, mastercard, mat, mayhem, mechanic, megaphone, member, memory, mercedes benz, mermaid, meteor, michael scott, michelangelo, microscope, microsoft, microsoft word, microwave, midnight, migrate, millionaire, mime, mine, mine car, miner, minivan, mirror, missile, mitten, mohawk, moisturizer, molar, mold, mom, monsoon, monster, monsters inc, mooch, moonwalk, moth, mount rushmore, mozart, mr potato head, mulan, mummy, music, mysterious, myth, name, nanny, naruto, navigate, negotiate, neighborhood, nemo, nepal, nest, netflix, neutron, newsletter, night, nightmare, nike, north pole, nose, nostril, nurse, nutmeg, oar, obey, observatory, office, offstage, olive oil, olympics, one-way street, opaque, optometrist, orange juice, orbit, organ, organize, ornament, ornithologist, ounce, oven, owl, oyster, pacific ocean, pacifier, page, pail, pain, palace, pancakes, panda, panic, pantyhose, paper plate, paperclip, parade, paranoid, parent, parking garage, parley, parody, partner, password, pastry, patrick starr, pawnshop, peace, peacock, peanut, peasant, pelt, pen pal, pendulum, pepsi, periwinkle, personal, pest, pet store, petroleum, pharaoh, pharmacist, philosopher, phineas and ferb, phone, photo, piano, pickup truck, picnic, pigpen, pigtails, pile, pilgrim, pilot, pinboard, pineapple express, ping pong, pink panther, pipe, pirate, pizza, pizza sauce, plan, plank, plantation, plastic, playground, pleasure, plow, plumber, pocket, pocket watch, point, pokeball, pokemon, pole, police, pomp, pompous, pong, popeye, population, portfolio, positive, positive champion, post, post office, practice, president, preteen, prey, prime meridian, printer ink, prize, produce, professor, profit, promise, propose, protestant, psychologist, publisher, pumpkin, pumpkin pie, punching bag, punishment, punk, puppet, putty, quadrant, quarantine, quartz, queue, quicksand, quit, quiver, raccoon, race, raft, rage, rainbow, raindrop, rainwater, random, raphael, ratatouille, ratchet, ray, reaction, realm, ream, receipt, recess, record, recorder, recycle, referee, refund, regret, religion, remain, resourceful, rest stop, retail, retire, reveal, revenge, reward, rhyme, rhythm, rib, rick and morty, riddle, right, rim, rind, ringleader, risk, rival, robe, robot, rock band, rocket, rodeo, roller coaster, roommate, roundabout, rowboat, rubber, ruby, rudder, runt, rv, s'mores, safe, salmon, salt, sand castle, sandbox, sandbox bruise, sandpaper, santa claus, sap, sapphire, sash, sasquatch, satellite, saturn, sausage, saxophone, scarf, scatter, schedule, school, school bus, science, scissors, scooby doo, scrambled eggs, scream, screwdriver, script, scuba diving, scythe, seahorse, season, seat, seat belt, seed, serial killer, servant, sewer, shaft, shakespeare, shame, shampoo, sheep, sheets, shelter, sherlock holmes, shipwreck, shoelace, shopping cart, shotgun wedding, shower, shower curtain, shrew, shrink, shrink ray, sickle, sidekick, siesta, signal, silhouette, silt, simba, simpsons, skateboard, skating rink, ski goggles, ski lift, skip, skipping rope, skydiving, slack, sleep, sleet, slim shady, slipper, slump, snag, snapchat, sneeze, snooze, snore, snow globe, snowball, snowflake, soak, social distancing, socks, softball, solar eclipse, somersault, song, sophomore, soul, soulmate, soviet russia, space, space-time, spaceship, spaghetti, spare, speakers, spiderman, spirited away, sponge, spoon, spotify, spring, sprinkler, squat, stage, stage fright, stagecoach, stairs, staple, starbucks, starfish, startup, star trek, statement, stationery, statue of liberty, stay, steamboat, steel drum, stethoscope, stew, stewie griffin, sticky note, stingray, stockings, stork, storm trooper, story, stout, stowaway, stranger, strawberry, streamline, student, stuff, stun, submarine, sugar, suit, sun, sunburn, sunlight, sunscreen, superbad, superman, surfing, sushi, swamp, swarm, sweater, swim shorts, swing dancing, switzerland, swimming, syringe, system, tachometer, taco bell, tadpole, tag, tank, tattle, taxes, taxi, teabag, team, tearful, teenage mutant ninja turtle, teenager, teepee, telepathy, telephone booth, telescope, temper, ten, tesla, testify, tetris, thanos, the beatles, the dark knight, the prestige, theory, think, thread, thrift store, throne, ticket, tide, time, timeline, time machine, time zone, tin, tinting, tiptoe, tire, tissue box, toast, today, toddler, toilet paper, toll road, tomato sauce, tombstone, toothbrush, toothpaste, top hat, torch, tornado, toronto maple leafs, tourist, tournament, tow, tow truck, toy store, toy story, trademark, traffic jam, trail, trailer, train, train tracks, transformers, translate, transpose, trapped, trash bag, trash can, trawler, treatment, trench coat, tricycle, trip, trombone, truck, truck stop, tsunami, tub, tuba, tug, tugboat, turret, tutor, tutu, twang, twitter, umbrella, unemployed, united states, university, upgrade, vacation, vampire, van, vanilla, vanquish, vegan, vegetarian, vehicle, vein, venn diagram, vest, villain, violent, vision, vitamin, voice, voicemail, volleyball, wag, wall-e, wallet, wallow, wasabi, washing machine, water, water buffalo, water cycle, water vapor, wax, wealth, weather, wedding, wedding cake, weed, welder, werewolf, wet, wetlands, whale, whatsapp, whey, whip, whiplash, whisk, wifi, wig, wikipedia, win, wind, winnie the pooh, wish, witch, wizard, wolverine, woody, workout, world, wormhole, writhe, yacht, yak, yard, yardstick, yawn, yeti, yin yang, yoda, yodel, yolk, youtube, zamboni, zen, zero, zeus, zip code, zipper, zombie, zombieland, zoo
submitted by skribblwords to skribbl [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]

materialfluss - Fachmedium der Intralogistik - YouTube Oil cooling system Antminer S9 Bitcoin 2 Bitmain Antminer s7 or s9 Electrical Information and Home ... DTDFeV - YouTube Bitcoin Circuit Deutsch Erfahrungen 2020, Seriös Oder Betrug?

Die mittlere Zeit für eine Transaktion mit Miner-Gebühren, die in einen abgebauten Block aufgenommen und dem öffentlichen Kontenbuch hinzugefügt werden soll. Durchschnittliche Bestätigungszeit. Die durchschnittliche Zeit für eine Transaktion mit Bergarbeitergebühren, die in einem abgebauten Block enthalten und dem öffentlichen Hauptbuch hinzugefügt wird. Mining-Informationen. Gesamte ... Currently the best miner on the market for mining Bitcoin is the Antminer S19 Pro by Bitmain. You can read my review of it here. Is It Worth to Mine Bitcoins? Bitcoin mining has become more of a profession than a hobby these days. If you want to mine profitability you’ll need to invest heavily in equipment, get cheap electricity, and locate yourself in a cool area since miners tend to heat ... Pro Tag erschaffen Miner etwa 3.600 BTCs. Daraus ergibt sich im Bitcoin Diagramm die Höhe der Bitcoins sent avg. per hour oder Bitcoins sent last 24h bezüglich Market Cap. Ein Teil davon wird zur Deckung von Betriebsausgaben verkauft. Die täglich anfallenden Stromkosten im Hinblick auf das komplette Bitcoin Mining werden auf etwa 500.000 Dollar geschätzt. Wird diese Summe durch den jeweils ... Miner produzieren ungefähr 3.600 Bitcoins am Tag, von denen sie einen Teil zur Deckung ihrer Strom- und sonstigen Betriebsausgaben verkaufen. Die täglichen Stromkosten des gesamten Mining werden auf 500.000$ geschätzt. Teilt man diese Summe durch den aktuellen BTCUSD-Kurs, ergibt das eine Schätzung der minimalen Anzahl von Bitcoins, die Miner täglich an die Märkte liefern. Nachfrage. Mit ... The price of Bitcoin when the miner sells it; The level of difficulty when the Bitcoin is mined; By far, the biggest factor affecting how much money a mining farm makes is how much it pays for electricity. Nearly all mining farms are using the same hardware. Since the reward for finding a block is fixed, and the difficulty is adjusted based on total processing power working on finding blocks ...

[index] [3751] [38313] [17391] [18783] [18339] [36000] [7130] [22877] [50808] [24322]

materialfluss - Fachmedium der Intralogistik - YouTube

New video every Tuesday! Today we are taking a look at the Gekkoscience NewPac USB miner. We'll check all the hardware you need for setting it up, discuss so... We are miners from 2013 looking to create community and help train and learn together as blockchain tech changes so quickly. Leave your thoughts in the comme... This video is unavailable. Watch Queue Queue. Watch Queue Queue Die Darmstädter Tage der Fotografie sind 2004 aus einer Initiative von Fotografen entstanden. Inzwischen zählt das internationale Festival zu den wichtigen d... materialfluss, das Fachmedium der Intralogistik.

#