the blockchain joy tokens - gaming on · introduction the existing gaming marketplace the existing...
TRANSCRIPT
JoyTokens-gamingontheblockchain
Abstract
JoyGaming’stechnologyoffersanovelsolutiontoconnectsmalldevelopers,softwarehouses,
largecasinosandplayers.Itcreatesagamingecosystemthatbothempowersplayersand
helpsdevelopersandcasinosreducerisk.
Thelackoftrustandtransparencyisaconcernwiththeonlinegamblingindustry.Playerstend
tousereputablecasinosinsteadofsmallersites,eveniftheyoffermore“interestinggames”,
becauseplayersnaturallygravitatetocasinobrandsthattheytrust.JoyGaming’stechnology
isatransparentblockchain-basedsystem,whichwillhelpimprovetrustinthegaming
industry.JoyGaming’stechnologyenablesuserstoplayinatransparentandcode-governed
environment.Thisallowsplayersanddeveloperstohaveconfidenceinthefairnessofthe
games.ThroughaninnovativeRNGgenerator,playerswillhavepeaceofmindthatthe
gamestheyplayarefairandsafe.Developers,casinosandbusinessesbenetfroman
ecosystemthatprovidesliquiditysharingandfaircompensation.Byconnectingdevelopers
andcasinos,weaimforanoptimalsolutionwhereallparticipantsinJoyGamingbenefit.
Introduction
Introduction
TheexistinggamingmarketplaceTheexistingGamingecosystemislargelyreputationdriven-areputationbuiltupby
increasedadvertising.Toacquireandretainplayers,casinosareforcedtospendlarge
amountsinordertobuildtrustandreputationthroughbrandawareness.Inaddition,large
casinoscontrolgamedevelopment.Playersareforcedtotrustthesecasinosbecausealack
oftransparencymeansthatplayerscan’ttracktheirwagersandthuscan’tassessthe
legitimacyofeachbet.
Smallerdevelopersalsosufferbecausetheyarepaidasmallpercentageofthegames
revenueandfacedifficultieswhenpublishinganewgame,suchas:lackofimmediateincome
andaccesstothelargegamingplatforms.
TheJoyGamingsolution
TheJoyGamingsolutionJoyGaming’ssolutionisblockchain-basedanditallowsdeveloperstocreategamesthatare
runonitsbackendthroughasmartcontract,ratherthandirectlyontheblockchain.Asallthe
resultsarerecordedwithintheblockchain,thereissignificantlylowerfraud.Thusplayerscan
verifythatdevelopersarerunninggamesexactlyasdescribedontheblockchain.Further,
gamedevelopersandsoftwarehousescanconnectandintegratewithliquidityproviders,
suchascasinos,toprovideaccessdirectlytotheirgames.Boththecasinosandthe
developersbenetfromtheadditionalrevenueandincreasedgameinnovation.Thelackof
reputationofanyspecificsitecanbeoffsetbythefactthatrulesandunderlying
infrastructureofthegamesarerecordedontheblockchain(inadditiontotheapproval
systembeforegamesareallowedtogoliveontheJoyGamingnetwork).
Technology
SmartcontractsTheJoyGamingnetworkreliesondecentralisedsmartcontractstoguaranteeandrecord
everythingontheblockchain.Throughtheblockchain,wewillbeabletoauditeverythingthat
happensonJoyGaming.Usersthatplaythegameswillbeabletoview,inrealtime,the
outcomesandtherewardsofthenetwork.Unliketraditionalcasinoswheredepositsaremade
tothecasinoaccount,userswillalwayshavecontrolovertheirJoyTokenwallet(and
withdrawalsaresimplerandconductedmorequickly).
OurPlatformwillusetheEthereumnetworkasaBlockchainbasedecosystem.TheEthereum
networkiswell-established,accepted,andusedbythecommunitywithafullTuringlanguage
capability.Whiletherearesomelatencyissues,amiddle-grounddecentralisedsolutionis
proposedbelowthatcansignificantlyreducethislatency.
TheusageofanAutonomousAgent(i.e.aSmartContract)buildstrustinthesystembecause
anyconflictofinterestbetweenthegamblerandthePlatformismanagedandauditedina
decentralisedmanner.Nothirdpartyneedstobeinvolvedsinceallthetransactionsaredone
viaaSmartContract,whichguaranteeseveryonehasaccessatalltimesandcanverifythe
game’sfairness.
TheJoyGamingstack
Ourtechnologystackisprimarilycomposedofthreemaincomponents:theBlockchainLayer,
GameApplications(back/frontend)andtheRandomNumberGenerator(RNG).The
back/frontendofthegameswillberunningondatabases,howeverallpartsthatcouldleadto
anyformofdisputebetweentheplayerandthePlatformwillbedecentralisedandaudited
overtheBlockchainusingSmartContracts.
Theabovefiguredemonstratesthecommunicationbetweenapprovedgameapplicationsand
theJoyGamingRandomNumberGenerator.
TheBlockchainLayerTheBlockchainlayerhasthreefunctions:tokenmanagement,gameoutcomemanagement,
andprovidingauditabilityoftheRandomNumberGenerator.
TheTokenManagement
Inatraditionalonlinecasino,Clientssendmoneytothecasinoinordertoplayitsgames.This
createstheopportunityforpotentialfraud.JoyGamingsolvesthisproblembyusing
Blockchaintechnology.Allplayerfundswillbestoredineachplayer’sJoyTokenwallet.Whena
playerplacesabet,themoneywillbesenttoaSmartContractwhichwillmanagethe
outcomeofthebetinadecentralisedmanner.UsingBlockchainmeansthatthecasino(i.e.
theJoyGamingPlatform)hasnocontrolovertheplayer’smoneyatanytime.
Tosummarise:
Theplayerownshis/hermoneyatalltimes.
Theplayeristheonlypersonwhohasmanagementrightsovertheirfunds.
WagerswillbemanagedinadecentralisedmannerusingSmartContracts.
TheGameOutcomeManagementForeachplayer’swager,aSmartContractwillbeused.TheSmartContractwillmanagethe
informationprovidedbyallpartsofthesystem(Gamecode,RNG,playerinput).TheSmart
Contractwillthenverifytheoutcomeoftheplayandautomaticallyallocatefundstotheright
personaccordingtotheestablishedcontractrules.
Forexample,PlayerAinitiatesabetontheroulette.
1. Thefundwillbeautomaticallysenttotheroulettecontract
2. Therandomnumbergeneratedforthisturnoftheroulettewillbecopiedandrecorded
withinaSmartContract.(Note:everythingcritical(RNGandgamehistory)tothegameplay
thatoccurswillberecordedonaSmartContract).
3. Utilisingtherandomnumbergenerated,theGamecodewillsendtheoutcometothe
SmartContract
4. Thewinnerwillthenbeautomaticallycredited.Iftheplayerloses,thenthemoneyis
dividedbetweentheDeveloperandthePlatformmanagement.Thissplitisnegotiated
duringthedevelopmentphaseandappliedautomaticallywhenaplayerloses.
5. Finally,theplayercandecidetorestarttheprocessandcontinueplayorendtheirgaming
session
DemoCodeforinitiallyregisteringagameonthenetworkThecodebelowdemonstratesregistrationofagameontheJoyGamingnetwork.The
registrationisdonefullythroughtheEthereumnetwork,soparticipantscaneasilyverifythat
thecontracthasbeenofficiallyapprovedbythenetwork.Throughthisdemo,weseethat
registrationcanbecalledthroughtheGameRegistry()functionwherebythegamewillbe
registeredontheJoyGamingnetwork.(Note:Theamounttobecreditedtothedevelopercan
alsobespecified,throughthesetPlatformShare(uint256newShare)).
contractGameRegistryisOwnable{
usingSafeMathforuint256;
addresspublictokenAddress;
address[]publicgameList;
uint256publicdecimals=5;
uint256publicplatformShare=5*10**(decimals.sub(2));
addresspubliccontroller;
mapping(address=>bool)publicgameRegistered;
eventControllerTransfer(addressoriginalController,addresscurrentController);
eventPlatformShareUpdate(uint256originalShare,uint256newShare);
eventGameRegistered(addressgame);
eventGameDelisted(addressgame);
functionGameRegistry(address_tokenAddress){
owner=msg.sender;
controller=owner;
tokenAddress=_tokenAddress;
}
functionsetController(addressnewController)publiconlyOwner{
require(newController!=address(0)&&newController!=controller);
ControllerTransfer(controller,newController);
controller=newController;
}
functionsetPlatformShare(uint256newShare)publiconlyOwner{
require(newShare<10**decimals);
PlatformShareUpdate(platformShare,newShare);
platformShare=newShare;
}
functioncreateGame(string_name,uint256_payoutRate)public{
addressnewGame=newGame(_name,msg.sender,this,tokenAddress,payo
utRate);
require(!gameRegistered[newGame]);
gameList.push(newGame);
gameRegistered[newGame]=true;
GameRegistered(newGame);
}
functiondelistGame(addressgame)publiconlyOwner{
require(gameRegistered[game]);
gameRegistered[game]=false;
GameDelisted(game);
}
functionregisterGame(addressgame)publiconlyOwner{
Gameg=Game(game);
require(!gameRegistered[game]);
gameRegistered[game]=true;
gameList.push(game);
GameRegistered(game);
}
functiongetGameRegistered(addressgame)publicconstantreturns(boolregiste
red){
returngameRegistered[game];
}
}
TheRandomNumberGenerator(RNG)AuditabilityAkeypartofthegamingindustryistheverifiabilityofaRNG.Inthetraditionalsense,RNG
generatorsareusuallyadministeredbythecompanyhostingthegames.However,inour
case,thiswillbedecentralisedanddemonstrablyfairbecauseeverygamewillrunona
custombuiltalgorithmthatreliesontheRNGgeneratorlinkedtotheEthereumnetworksmart
contract.ThisisdescribedinmoredetailintheWrappingPhaseandPay-outProcess.
GameApplication(Back&Front-EndManagement)GameapplicationcodeswillbehostedonourserversorhostedthroughtheIPFS/Sia/Storj
network.GameoutcomewillthenbecommunicatedtotheSmartContract.Thereafter,the
gameserverswillprovidethestateofthegametoBlockchainusingJSONRPCviaIPC.The
userexperiencewon’tbeimpactedbytheusage/availabilityoftheBlockchainbecauseall
gameoutcomeswillbeavailableimmediately.Thisfeatureensuresthatuserexperienceis
closetotraditionalgameplay,whileensuringthattheprocessisalsofullytransparentand
decentralised.EverygamecodewillbeaccessibleontheBlockchainalongwithfullauditability
ontherandomnumbergenerated.
RandomnessBasedonBlockchainInformationThekeyisfindingadecentralisedRNGgenerationtechniquethatourgamescanutilisebased
ontheblockchain.ThecurrentsolutionutilisestheusageofBlockgenerationinformation
(suchastimestamp,Nonce,Hashofthecurrentblock,andsoon)togeneraterandom
numbers.Althoughthosenumbersaregeneratedbyminers,itishighlyunlikelyaminercould
successfullychangetheoutcomeofthegameontheEthereumPublicNetwork,becausethe
minerwouldhavetopossessenoughminingpowertominetheBlockseveraltimeswithinthe
publicenvironmentcompetition(around14seconds),asfollows:
1. ThemineriscompetingintheminingprocessofthePublicEthereumBlockchain
environment
2. Theminerfindsthenounceandisnowabletogetthereward
3. TheminerchecksthenounceandBlockinformationgeneratedagainstthewinning
requirementofthegame
4. Ifitmatches,theminerpopulatestheresult
5. Otherwise,theminerrestartstheminingprocesstofindanothernouncethatfits,
forgettingaboutthepreviousminingreward
Eventhoughthismethodwouldbehighlyreliable,werejecteditbecausewewereseekinga
modelthatdidnotallowanyroomforpotentialmanipulation.
RANDAO(adecentralisedautonomousorganisationwhichaimstogeneratefully
decentralisedrandomnumbers)isaveryinterestingpossibility,butitisnotmatureenoughto
beimplementedatthistime.JoyGamingsupportsthedevelopmentoffullydecentralised
randomnumbersandwewillinvesttimestudyingRANDAObecause,iffullymatureand
reliable,itiswhollyalignedwithourdevelopmentplan.
GeneratingdecentralizedRNGnumbers-AgileApproachTherandomgeneratormustsolvethefollowingchallenges:
TimeanddelaysfromtheBlockchainecosystem,suchasminingblocktime
Decentralizationandfullyauditability
Licensingandlegallycompliant
Theproposedsolution:
Therandomnessofnumberswillbeintroducedthroughacongruentialgeneratoralgorithm
thatgeneratespseudorandomsequencesofnumbers,whichwillchangebyaddinginputof
datafromtheoutsideworld(e.g.playermovementsovertheplatform,Forexand
cryptocurrencyexchangedata,etc.).Thesedatasetsareusedbecausetheyhaveboth
unexpectedbehaviourandarealwaysavailable.Thissolutioniscompliantwithlicensing
requirementsbecauseitcanprovidealltheneededrandomnumbersinashortamountof
time,withoutimpactinguserexperience.InordertostrengthenourRNGmodel,wewill
initiateadoubleverificationusingtheBlockchaintechnologybyminingeachnumberovera
transaction.ItwillthenbeimpossibleforJoyGamingtomanipulatethenumbersinanyway.
Joytokentechnology:
Blockchain-basedback-endanddevelopmentstack.
Auditabilityandtransparencyovergamingcodes-allcontractsareaccessiblebyplayersat
alltimes.
SmartContractimplementedandconnectedtotheGameback-endthroughAPIs.
SecurityprovidedbytheEthereumPublicNetwork.
Agameregistrysystemconnectinggamedeveloperstoliquidityproviders(casinos).
Randomnumbergenerationsystemsthatallowgamestobepubliclyverifiableandeasily
accessedbygamedevelopers.
Gameoperations
EcosystembenefitsandstructureByoperatingontheblockchain,userscaneasilyidentifywheretheirmoneyisgoingand
whethertheresultsarefairlygenerated.Userexperienceisourtoppriorityandwewilloffera
widevarietyofgames,strongsecurity,andreliability.
Inadditiontouserbenefits,developersbenetfromthelargeliquiditypoolandadditional
reputationprovidedbyoperatingontheJoyGamingnetwork.Developerswillbeabletoeasily
“prove”thegamesthattheuserplaysbecauseitistransparentandontheblockchain.The
developerwillconnecttocasinosandcollectcommissionsfromthegamesbeingplayed,
whileknowingtheyhavearobustaudittrail.DevelopersarecrucialintheGamingindustry.
WeatJoyGamingunderstandthemandwillworktoprovidethebestexperienceintermsof
fairreward,fullsupportonthemarketingprocess,andgreatercapacityofplayers.
Toensurethesuccessofgames,JoyGamingprovidessupporttothedeveloperswithintheJoy
Gamingecosystem.
Supporttodevelopersisprovidedon:
ClientacquisitionbyprovidingMarketinganddirectaccessourclientbase
Compliancefromalegalandlicensingperspective
Blockchainintegration
Developersonlyneedtoworryaboutthegamedevelopment,Joytokenswilldotherest.
Findingthebalancewithintheblockchain
Userexperienceiscrucialwhenitcomestoworkingonanonlinegamblinginitiative.Joy
Gaminghasworkedhardtofindtherightbalancebetweenthespeedofthegaming
experienceandthedecentralisationthatcomeswithuseofablockchainfortheonline
gamblingindustry.
PossibleissuesthatEthereumfacesinit’scurrentstateTheEthereumBlockchainisnotanoptimalsystemtoprocessdataquicklybecausetheProof
ofWorkminingprocesshappensevery14seconds.Furthermore,theEthereumisnotmade
tostorehugeamountsofdata,giventhattheBlockchainiscopiedoneveryparticipatingnode
ofthenetwork.Therefore,afullydecentralisedsystemateverypoint-fromtheRNGtothe
gameitself-wouldnotbethebestoptionbecausetherewouldbeasignificanttimedelayand
playersdonotwanttowaitminutestogettheplayresults.Further,SmartContracts
managinglargeamountsofdataandprocessingnon-linearlogicareexpensive.
GASpriceTheEthereumintroducedGASpricemainlytoavoid“DDoSlikeattacks”,wherearogue
personcouldcreatealargenumberofcontractstoimpacttheefficiencyofthepublic
networkitself.Thisway,GASfrequentlychangesitscostwiththeaimofanaccurateusageof
Smartcontractdemand.
Summary:
TheJoyGamingplatformisarealisticbalancebetweenspeedanddecentralisationinto
providetheoptimalplayerexperience.Everygamepopulatedontheplatformwillcomply
withthefollowingrequirementsofdecentralisation:
Thespeedoftheuserexperiencewon’tbeimpacted-i.e.thegameoutcomeneedstobe
availablewithinafewseconds.
Nothirdparty,developers,orthePlatformhaverightsoverthetokensorthemoneyspent
inthegames.
Accordingtothegameresult,Pay-outwillthenbeautomaticallyprocessedtothewinners
ortheactorsinvolvedinitsdevelopment.
Althougheverygamewillbeofferedbydifferentdevelopers,therewillbeagameacceptance
process(seesection6.5)wheretheJoyGamingteamwillensuretheDeveloperscomplywith
ourspeedanddecentralisationrequirements.Nogamewillbepopulatedontheplatformifit
doesnotcomplywiththoserequirements.WemayincludeanadditionalplayerKYCprocess,
wherebyonlyJoyGamingverifiedplayersarepermittedtousetheplatformsothatweensure
ahigherleveloffairplayandlegalcompliance.
ArchitectureofBlockchainIntegrationandScenarios
Asexplainedearlier,thetechnicalfeaturesofallgamesneedtomatchtworequirements:
minimisethedelayscausedbytheuseofBlockchainandutiliseitsdecentralisation.
ThefollowingoverallGameArchitecturematchestheJoyGamingPlatformrequirementsin
termsofsecurity,decentralisationandspeed.Therearefourmaincomponents:
TheClient-theplayermanagestheirmoneyatalltimes.
TheBlockchain-thesmartcontractcontrolsthepay-outaccordingtothegameoutcome.
TheGS(Gameserver)-representsthedatabaseswherethegameruns.
TheWS(Walletserver)-thePlatformactor’swalletwillbeupdatedaccordingtofinalplay
outcome.
TheProcessisdividedintoseveralphases:
TheLoadingPhaseWeaimtoavoidtheverificationtransactiontimeoneverybetduringtheLoadingphase
becausethatwillminimisethedelayscausedbytheblockchainandwillconsiderablyimpact
thespeedoftheuserexperience.
Inordertomeetthisrequirement,theuserwillbeaskedtosendmoneytotheselectedGame
SmartContractwhilethegameisloadingandconfiguring.
ThisProcessrequiresfifteensecondstoloadthegameandsetuptheBlockchainsmart
contract.Thisprocessisallowedif,andonlyif,theuserhasbeencheckedandverified
throughtheKYCprocess.Itwillbeimpossiblefornon-verifiedplayerstosendmoneytothe
smartcontractandanautomaticerrormessagewillguidehimtogothroughtheKYCProcess
(moredetailsinsection15).
GameinitiationprocessThecoinamountmovedintothesmartcontractwillbepopulatedontotheWS(WalletServer)
astheinitialclient’swalletvalue.TheGS(GameServer)canbeseenasacache-likesystem,
wherethevalueofthePlatformactor’s(developer,platform,client)moneywillincreaseor
decreasedependingonthegameplayoutcome.
EachClient’sbetwillbecommunicatedtotheGS(Gameserver)todetermineoutcomes.
1. WSsetsupthetemporarywallets-theamountoftheclient’swalletwillbetheone
investedduringtheloadingphase.Adoublecheckisperformedontothesmartcontractto
makesuretheinitialamountassignedtotheclient’swalletistheoneinvestedtotheclient
duringtheloadingphase.
2. Theuserplacesabet(forexample,5JoyTokensareplacedonREDinaroulettegame).
3. ThebetwillbecommunicatedtotheGSandprocessedusingtheRNG(thatisaudited
withintheBlockchain).Dependingonthegame’soutcome,theWS’swallets(Client,
PlatformandDeveloper)willbeupdatedaccordingly.
4. hisprocesswillberepeatedaslongastheuserhasfundsanddoesnotwishtostop
playing.
Demosmartcontractforrunningagameonthenetwork
functionGame(string_name,address_owner,address_registryAddress,address_t
okenAddress,uint256_payoutRate){
name=_name;
owner=_owner;
registryAddress=_registryAddress;
registry=GameRegistry(registryAddress);
tokenAddress=_tokenAddress;
token=ERC20(tokenAddress);
payoutRate=_payoutRate;
isActive=true;
decimals=registry.decimals();
}
functionactivate()publiconlyOwner{
isActive=true;
GameActivated();
}
functiondeactivate()publiconlyOwner{
isActive=false;
GameDeactivated();
}
functionownerDeposit(uint256amount)publiconlyOwner{
require(amount>0);
require(token.transferFrom(owner,this,amount));
ownerAvailableDeposit.add(amount);
}
functionownerWithdraw(uint256amount)publiconlyOwner{
require(amount>0&&amount<=ownerAvailableDeposit);
ownerAvailableDeposit.sub(amount);
require(token.transfer(owner,amount));
}
functionplayerJoin(uint256initialDeposit)publicwhenActive{
require(!playerInGame[msg.sender]);
uint256potentialPayout=getPayout(initialDeposit);
require(potentialPayout.sub(initialDeposit)<=ownerAvailableDeposit);
ownerAvailableDeposit=ownerAvailableDeposit.sub(potentialPayousub(initialD
eposit));
playerInGame[msg.sender]=true;
if(initialDeposit>0){
playerCurrentGameDeposits[msg.sender]=initialDeposit;
require(token.transferFrom(msg.sender,this,initialDeposit));
}
PlayerJoined(msg.sender);
}
functionannounceResult(addressplayer,uintresult)publiconlyController{
require(playerInGame[player]);
require(result<=uint(GameResult.draw));
playerInGame[player]=false;
GameResultgameResult=GameResult(result);
if(gameResult==GameResult.win){
require(resolvePlayerWin(player));
}elseif(gameResult==GameResult.loss){
require(resolvePlayerLoss(player));
}else{
require(resolveDraw(player));
}
GameResultAnnounced(player,result);
}
functionresolvePlayerWin(addressplayer)privatereturns(boolsuccess){
uint256payout=getPayout(playerCurrentGameDeposits[player]);
playerCurrentGameDeposits[player]=0;
if(payout>0)
playerDeposits[player]=playerDeposits[player].add(payout);
returntrue;
}
functionresolvePlayerLoss(addressplayer)privatereturns(boolsuccess){
uint256playerDeposit=playerCurrentGameDeposits[player];
playerCurrentGameDeposits[player]=0;
uint256payout=getPayout(playerDeposit);
uint256platformShare=playerDeposit.mul(registry.platformShare()).div(10**r
egistry.decimals());
require(platformShare<playerDeposit);
if(platformShare>0)
platformDeposit=platformDeposit.add(platformShare);
uint256profit=playerDeposit.sub(platformShare);
ownerAvailableDeposit=ownerAvailableDeposit.add(payout.sub(playerDeposit
)).add(profit);
returntrue;
}
functionresolveDraw(addressplayer)privatereturns(boolsuccess){
uint256playerDeposit=playerCurrentGameDeposits[player];
playerCurrentGameDeposits[player]=0;
uint256payout=getPayout(playerDeposit);
if(playerDeposit>0)
playerDeposits[player]=playerDeposits[player].add(playerDeposit);
ownerAvailableDeposit=ownerAvailableDeposit.add(payout.sub(playerDeposit
));
returntrue;
}
functionplayerWithdraw(uint256amount)public{
require(amount>0&&amount<=playerDeposits[msg.sender]);
playerDeposits[msg.sender]=playerDeposits[msg.sender].sub(amount);
require(token.transfer(msg.sender,amount));
}
functionplatformWithdraw(uint256amount)public{
require(msg.sender==registry.owner());
require(amount>0&&amount<=platformDeposit);
platformDeposit=platformDeposit.sub(amount);
require(token.transfer(msg.sender,amount));
}
functiongetPayout(uint256deposit)privateconstantreturns(uint256payout){
returndeposit.mul(payoutRate).div(10**decimals);
}
}
WrappingPhaseandPay-outProcessTheuserisabletostopthegamesessionandstartthewrappingphaseatanytimeusinga
straightforwardprocessfacilitatedbythefriendlygamefront-end.Thewrappingprocess
consistsof:
1. Theuser’sstoprequestwillbepopulatedontotheGSandWS.
2. TheGSwillcreateahistoryfileofthesession,thefilewillthenbeHashed.
3. ThelastupdatedamountoftheWSwalletsalongwiththeHashwillbesenttothesmart
contract.
4. Accordingtotheinformationsent,thesmartcontractwillchangeitsstateandprocessthe
pay-outontheBlockchain.
GameAcceptanceProcessWebelievethatourapproachwillattractanumberofdevelopersandgamepropositions.
Inordertomakethegameacceptanceprocessefficientandrelevanttoourplatform,allnew
gamepropositionswillbeprocessedasfollows:
1. Auditingthecode-ourexpertswillmakesureeverythingmatchesoursecurityandlegal
requirements.
2. Testingthegamebasedonvariousmetrics-time,security,costs,blockchainintegration,
userexperience,etc.IftheresultsfromStepsIandIIaresuccessful,thentheproposed
gamewillgothroughtotheintegrationprocess.
3. SmartContractdevelopment.
4. TestandsecurityauditofthedevelopedSmartContract.
5. GameLaunchovertheplatform.
OncethegameispopulatedwithintheJoyGamingnetwork,everythingwillintegratefrom
withinthesystem.Ifthedeveloperrequiresadditionalliquidity,he/shewilleasilybeableto
accessthepoolofcasinosthatarewillingtoparticipateinofferingthegames.Ifthereare
othertechnicalissues,ourteamwillsupportthedevelopertofindapromptresolution.
Samplepayoutsmartcontract
uint256playerDeposit=playerDeposits[player];
playerDeposits[player]=0;
uint256payout=getPayout(playerDeposit);
uint256platformShare=playerDeposit.mul(registry.platformShare()).div(10**regi
stry.decimals());
require(platformShare<playerDeposit);
if(platformShare>0)
require(token.transfer(registry.owner(),platformShare));
uint256profit=playerDeposit.sub(platformShare);
ownerAvailableDeposit=ownerAvailableDeposit.add(payout.sub(playerDeposit)).
add(profit);
returntrue;
Withinhiscontract,thedevelopercanelecttoreceiveashareoftheprofitsmadebyrunning
thegame.ThisisspecifiedintheplatformSharevariable.Aftereachgamerunbythecasino,
thedeveloperwillreceiveasmallportionoftherevenues.Allofthisisdirectlyencodedwithin
thesmartcontractsothereisnowaitbetweenthegamebeingplayedandtheypayout.
BlockchainIntegrationprocessexample-IcyCashSplash
Whilesamplecodeisincludedinthewhitepapertodemonstratethefunctionalityand
implementationofJoytoken,ourocialrepositorycanbeaccessedthroughourgithublink
below:https://github.com/JoyPlatform/joy-contracts.Thecodewillbecommentedtogivefull
visibilityandunderstandingofourapproachfromadevelopmentperspective.Ifyouhaveany
questions,pleasecontactourteamoverthecommunicationchannelatanytime.
BlockchainTechnologybeyondEthereumEthereumisnotmarketreadyforgamingtechnologybecausetherearestillissueswithspeed
andscalabilitythatneedtobesolved.Inthissection,wewillpresenttwoadditional
technologiesthatcouldaddvaluetoourinitiativeandmaybeintegratedintoour
developmentplan.
IOTA:DecentralizationusingDAGs(Directedacyclicgraphs)
IOTAisanewinnovativedecentralisedapproach.Itisnotablockchainecosystem,ratherit
introducestheconceptoftangle.Atangleisliterallyablockchainwithoutblocksanditmakes
theconsensusprocessanintrinsicpartofthesystem.
ThisinnovationintroducesgamechangingfeaturesfortheGamblingindustry:
Inordertoperformatransaction,youhavetoparticipateinthesystemandbepartof2
othertransactionvalidationprocesses.Thisaspectmakestransactionsfreeofcharge,
whichcouldintroduceaconsiderablecutintheinfrastructurecostforanonlinecasino
whilestillprovidingthenecessaryvalidation.
ThesystemhasbeenbuiltfortheIOTecosystemandisextremelyscalable.Itisrealisticto
imaginethesamesystemworkingefficientlyonasmartphoneortablet-whicharedevices
oftenusedbythegamblers.Thisinitiativeiscurrentlyunderdevelopment(atthetimeof
theproductionofthiswhitepaper,thissoftwareisstillinBetaphase).
Thenegativeforthegamblingbusinesswouldbethetransactionvalidationtime.However,
thetransactiontimeisdirectlyimpactedbythenumberofactiveparticipants(sinceyoumust
participateintwoothervalidationsinordertomakeyourowntransactionvalidated).Thus,a
largernumberofuserswilldecreasethetransactiontime(whichiscurrentlybetween2-3
minutes).Notably,theIOTAnetworkisstillonabetaversionandthefreetransactionfeature
willlikelyattractlargeamountsofusersandtherebyresolvethetransactionvalidationtime.
Thepotentialofthisecosystemhasnolimit,andwearefollowingitsdevelopmentandhoping
totestgameintegrationinthenearfuture.[1]
Decentralizationofstorageandhosting
Decentralisedstorageisanopenmarketsincetheblockchaintechnologyisnotmadetostore
data.Sia[2],IPFS[2],andStorj[3]arethemaincompetitorsforthismarket.Thegeneralidea
istoallowuserstostoredataorrentavailablestoragecapabilitiesmanagedovera
decentralisedenvironment.
Forexample,manypeopleintheworldpossessunusedstoragecapabilities.Thecompetitors
mentionedaboveproposetostoredatawithahighlevelofsecurityacrossanetworkof
participantsthatarelookingtoberewardedfortheirharddriverental.Ifapersonwantsto
storea1gigabitdocument,thenthedocumentwillbesplitintomanypiecesandeachpiece
willbeencrypted.Then,thoseencryptedpiecesarecopiedandspreadovereach
participant’sharddrive.
Thepowerofthismodelisthattheonlywaytoaccessthefileistopossesstheprivatekeyof
thedocumentholder,sinceitisimpossibletofindalltheencryptedpiecesofallthe
participantsinthenetwork.Itprovidesstrongsecurityforaveryattractivepriceandisjusta
littlemoreexpensivethancommoncentralisedsystems.Thistechnologyallowsstorageof
verysensitivedataoveranyuser’scomputerbecauseeverythingmanagedbetweenthe
renteranduserisviaacryptocurrencypayment.
Aspresentedinsection11.3,wechosetostoreahashofaclient’sGamesessionoverthe
blockchainenvironmenttomakeavailableafulltraceabilityoftheuser’sjourney.Usingthe
decentralisedstorageinourmodelwouldprovidesecurityofthehistoryandastrong
reliabilitybecausethesystemnolongerhasacentralpointoffailure.
JoyGamingislookingintousingthissolutionforpotentialintegrationinitsfurther
development.
Affiliateengagement
Newcasinooperatorsoftenstrugglewithplayerliquidity.Also,largeaffiliatesdonotwantto
dealwithsmallstart-upgamesbydevelopersbecausetheyoftenhavepoorconversionand
lowretentionrateswithplayers.Therefore,largeaffiliatesarehesitanttodealwithsmall
developersuntiltheyhavesometradinghistory.Asthesesmalldevelopersarepaidona
periodicbasisandnotinrealtime,theyoftensuffercashowissues.JoyGamingeasilysolves
thisthroughourpay-per-gamemodel.Eachtimecustomersplayonthegame,thepayments
aremadetotherespectiveparticipantsinthegame.Thisensuresanagileecosystemwitha
smallfeedbackloopthatwillevenfurtherencouragenewandinnovativeoperationsby
developers.
TheICO,KYCManagementandRequirements
Inordertosatisfyourlegalcompliance,wehavetoassociateeachinvestmentwithits
investor.Allparticipants,whatevertheamounttheyhaveinvested,willgothroughthebasic
verificationprocedurethatincludesacopyoftheirPassport.Thisprocesswillbemanagedby
JUMIO,whichisatrustedKYCmanagementcompany.
TheGameAccess,KYCManagementandRequirementsKYCmaybeimplementedinordertocomplywithregulatorybodies.Inthiscase,inorderto
beabletoaccessthegame,everyClienthastosuccessfullygothroughtheKYCprocess.
FollowingeachsuccessfulKYCcheck,thePublicKeyoftheClient’sWalletwillbeaddedtoour
system.Oncetheclient’spublickeyisadded,thentheclientcanuseourecosystem.Players
willthenbeeasilyabletoseetheirstatusandreviewtheirplayhistoryonthepublic
blockchain.
Casestudies
ThesoftwaredevelopmentcompanyAventisasoftwaredevelopmentcompanythatwantstocreateanonlinegamblinggame.
Theyhaveanamazingideathatwouldchangetheindustry.However,casinosarenotwilling
tohireAventbecausethemarketisnottestedyet.Aventcouldruntheirownprivategame
online,butthiscomeswithmultipleissues.First,Aventdoesn’thavethecapitaltooffertheir
ownprivatehighstakesgames.Second,userswillhesitatetotrustanunknowncompany.In
addition,usersarealsonotcomfortablewiththeideaofhandingovertheircreditcard
informationtoa3rdpartywhowillhaveaccesstoallthefunds.ThismeansthatAventwould
finditverydifficulttomakeaprofitontheirinnovativegamblinggames.
JoyGamingsolvesthisintwoways.First,ifAventweretorunontheJoyGamingnetwork,they
wouldgetexposuretoalargenumberofliquidityproviders(i.e.casinos)andthatwould
resolveanyliquidityissue.Second,thetransparentandimmutablenatureofsmartcontracts
andatrustedRNGgenerationalgorithmwouldassurepotentialusersthatthegamestheyare
playingonAventarefair.Finally,becauseallthetransactionsareconducteddirectlyfromthe
user’swallet,theyhaveaccesstoallthefundsatalltimesandwouldbemorewillingtotry
outAvent.Aventisnowabletoreachmorecustomersthanbeforeandcanfocusmoretime
ondevelopingadditionalinnovativegames.
TheuserUsersaretiredofhavingtoconstantlybrowsebetweenmanydifferentcasinosandgames
room,whichrequiresthemtotrustanincreasingnumberofthirdparties.JoyGamingensures
allthetransactionsarevisible,rulesareimmutablewithintheblockchain,anditverifiesits
developers.Therefore,userscanplayonJoyGaming’snetworkandbeassuredthatthe
gamesarefullyverifiedandsecure.Becausenofundsleavetheuser’swalletuntilagameis
initiated,theuserisassuredthattheirfundsaresafeandsecure.
ThecasinosCasinosarealwayslookingfornewwaystoattractusersandimprovethequalityoftheir
games.Casinosalsohavetheexpertise,capitalandliquiditytorungamesindependently.
Unfortunately,casinoscannotsimplyaddrandomgamesbecausenewlydevelopedgames
areoftennotacceptedbythemassmarket.TheJoyGamingnetworkbringsasolution.
Developersthatcreatenew,excitingandexperimentalgamescanentercontractsdirectly
withcasinos.Inthiscase,casinosaretheliquidityproviderinthesmartcontract,andeach
timeauserplaysthegame,thecasinowouldpayacommissiontothedeveloper.It’sawin-
winscenario.
TokenSale
TheTokenJoyTokenswillbeavailableforpurchaseontheEthereumnetworkasanERC20token.Thereis
acurrentchallengewiththeERC20token:ifyousendyourtokentoaSmartContract,you
havetousethe“approve+transferform”functiontomakethetransfer.But,ifyousendyour
tokentoanexternallyownedaddress,youhavetousethe“transfer”function.Unfortunately,
ifyoumakeamistakeusingthosefunctions,thenthemoneyislost.
SamplecodefortheERC20tokeninterface
contractERC20isERC20Basic{
functionallowance(addressowner,addressspender)publicconstantreturns(uint2
56);
functiontransferFrom(addressfrom,addressto,uint256value)publicreturns(boo
l);
functionapprove(addressspender,uint256value)publicreturns(bool);
eventApproval(addressindexedowner,addressindexedspender,uint256value);
}
WeareawareofthischallengeandareworkingtoensureitwillnothappentoourClients.We
plantoupgradetothenewandunder-developmentERC223standard(afteritisfully
developed).TheERC223hasanewfeaturethattriggers,inthecaseofascenarioexplained
above,andthemoneyisautomaticallysentbacktotheclient.
UtilityJoyTokenshavemanydifferentuses.Inthemostbasicsense,JoyTokenscanbeusedtoby
playerstoplaythegamesontheJoyGamingnetwork.Thenetworkprovidesafrictionless
rewardssystem,guaranteedpay-outs,attractionofotherwiseunobtainableaffiliates,
eliminatespotentialfraudandreducespaymentprocessingfees.
Forcasinosandgamedevelopers,thetokenscanbeusedtosecurepaymentforrunning
gamesandforreceivingpaymentfromplayers.Casinoscanguaranteereal-timeaffiliate
paymentstoalldevelopers,therebyaffordingnewcasinooperatorsthesamehighlylucrative
affiliatedealsthatarecurrentlyavailableonlytothelargestbrands.
Forthesmallergamedevelopersthatrelyonbiggercasinosto“back”thegames,tokenscan
beusedtoreceivecommissionsfromthecasinosthatprovidethereputationandtheworking
capitaltoofferthegame.
Alllegitimatepartiesareaffordedthesecurityofknowingtheimmutablesmartcontracts,
coupledwiththetokens,eliminatesfraudonthenetwork.
Overall,tokenswillhaveavaluebasedonwhatusersarewillingtopayinordertousethe
servicesontheJoyGamingnetwork.
TokensalestructureCryptocurrencyaccepted:ETH,BTC,Wiretransfer
Hard-cap:JoyTokensalehasahard-capof46340000USD.
Soft-cap:JoyTokensalehasasoft-capof1000000USD.Ifthetotalamountraisedisbelow
thesoft-cap,theofferingisconsideredfailed.
Timescale:Startingapproximatelyon20thofMarch2018andlastingforupto31daysor
beforeallthetokensaredistributed.
Oversubscription:WhenJoyTokenofferingraisesmorethan46340000USD,thetokensale
willbeclosedimmediately.Thereisachanceofoversubscription.Insuchanevent,the
exceedingamountoffundwillbereturnedwithin15daysafterthecloseofthetokensale.
Pleasenotethatnointerestwillbepaidinsuchcase.
Failure:Ifthetokensaledoesnothitthesoft-cap,thenitwillbeconsideredafailedtokensale.Theofferingwillbeterminatedandanyfundssentwillbereturnedwithin15daysafterthe
closeofthetokensale.Pleasenotethatnointerestwillbepaidinsuchcase.
Otherrisks:Thesaleofthetokensinvolvesanumberofotherrisksthatareexplainedinthe
PrivatePlacementMemorandum(PPM)thataccompaniesthetokensaledocuments.Those
risksinclude,withoutlimitation,theSEC’scurrentpositionthatsimilartokenswereconsidered
securitiesandrequiredregistrationoranexemption,potentiallossofvalueinthetokens,
inabilitytoresellthetokens,failuretodeveloptheJoyGamingnetwork,andviabilityof
technologyrisks.ThereaderisurgedtoreadthePPMforafullerexplanationoftherisksand
toobtainpropercounselbeforeproceedingwithanyinvestment.
TokenDistribution
TokenDistribution
Presale 20% 140,000,000
SoldduringICO* 30% 210,000,000
Rewardspool(VIPetc) 10% 70,000,000
Soldontheplatform 23% 161,000,000
Foundingteam,vestedfor24months 12% 84,000,000
Ambassadors,FundRaisingFees 3% 21,000,000
ICObounties 2% 14,000,000
Total 100% 700,000,000
TheTeam
CEO
AndrewMacDonald20yearsofexperienceinRetailandOnlinegamingworkingformajorblue-chipcompanies.
Successfullyapplyingmarketingretentiontechniquesfocussingontheindividualplayeraswell
asensuringqualitygameofferingstopromotebusinessgrowth.Akeentroubleshooterwitha
strongdatafocus.
CMO
MikeLeysOver34yearsofprofessionalexperience,including30yearsinmarketingsector.Senior
Managerandseniormarketingspecialistwithknowledgeandproofedinvolvementinallareas
ofonandofflinemarketingandecommerceacrosstheworld.Hissectorexperienceincludes
iGaming,entertainment,mobile,retail,financialservices.Since2005intheiGamingsector-
successfullylaunchinganumberofonlinegamingsiteswithafocusonattractingquality
*Unsoldtokenswillbeburnt.
players.
CTO
SteveGiordanoImbrollFull10yearsofSoftwareDevelopmentexperience,7yearsofBusinessIntelligence,Banking
andFinances.Highskilledproductdeveloperfor,a.o.,Sony,Uber&PKRTechnologies.
Professionaljugglerofmultiplerequestsfromvariousdepartments.Visionerontheintricacies
ofthecompany’sperformance.RecentlyfascinatedwithGamingandSecurities.
Roadmap
JUNE2017OP:500,000SeedFunding
OCTOBER2017OP:Onboardadvisorsfromindustryandblockchain
NOVEMBER2017OP:JoyGamingFoundationEstablishedOUT:SpeakingAtBlockChainExpo
DECEMBER2017TECH:DemoSlotMachineusingSmartContractsOP:ApplicationforGamblingDeveloperLicenseTECH:LaunchofJoyGamingPlatformforDevelopersTECH:CodeAudit
MARCH2017OP:TokenSale
APRIL2018OP:TokenSaleAudit
JUNE2018TECH:GamesliveonPlaycosmo
AUGUST2018TECH:ExpansionintoFixedOddsTableGamesOP:IntegrationtoMorePlatforms&DirectOperators
References
[1]https://iota.org/IOTA_Whitepaper.pdf
[2]https://www.sia.tech/whitepaper.pdf
[3]https://ipfs.io/ipfs/QmR7GSQM93Cx5eAg6a6yRzNde1FQv7uL6X1o4k7zrJa3LX/ipfs.draft3.pdf
[4]https://storj.io/storj.pdf
[5]https://bitcoin.org/bitcoin.pdf
[6]https://github.com/ethereum/wiki/wiki/White-Paper