Introduction to Ethereum Development
SF Ethereum Developers Talks · 30 Mar 2016 · 1:06:22
Martin Koppelman gives an introduction to Ethereum development at a SF Ethereum Developers meetup hosted at Ticketfly in San Francisco. The talk surveys the tools developers can use to build their own DApps, distributed applications that run on Ethereum, and serves as a starting point for newcomers in 2016.
Speakers
Topics
From SF Ethereum Developers Talks, hosted by SF Ethereum Developers.
Transcript
foreign [Music] oh all right uh Alex I don't I don't think you qualified actually uh okay
but uh you get your mouth open somebody willing to tell us their interests in uh ethereum okay uh okay I'm just trying foreign okay very good all right so uh uh anybody else want to have any me let's say right up here in the front row
Pizza your your news I've never tried for anything okay and we're right now to put our r d here right now uh blockchain platforms platforms whatever works we want to try to develop applications I think
there are more from these days kind of uh Beauty and services not not just giving you access to your home I'm gonna break it okay so uh I'll just throw out a few names so if you want you know it's really important to note to talk to you right if you want afterwards you know Martin is going to have a mob what people wanting to talk with him I guess of course so of course Martin once you've got to talk with uh
you know uh the um okay I guess we'll do two sentences great Ontario great um and uh Daniel Caraway has a mysterious as well right now yes please all right yes um Peter is interested in identity
you know even if you check the chat with him about it uh you guys could see what you guys always have some projects okay enough of that uh so Martin uh is uh he has this Elite background that implements the prediction Market on bitcoin
fairly and one on ethereum you can notice so if he doesn't mention that you should ask him about the comparison between development platforms the marketplace yeah thank you very much [Applause] all right so welcome glad you all all came and that there's so much interest uh after all the hiring announcements I could Edward I will connect one more so I'm working with uh consensus and they are also looking uh into hiring all kind of developers so talk to me if you are interested
okay so uh the first Meetup of the new Meetup Group uh silicon San Francisco uh ethereum Developers um my midterm or long-term goal was this meetup group is that it will be placed for exchange of experience or access ethereum developers I used to live in New York and there was a really cool bit depth uh Meetup Group every I think every other week and we discussed just latest Bitcoin Improvement proposals and all this stuff so that is my midterm goal for the Meetup Group uh short-term I think there's a lot of Need for some
basic education so I will start to meet up group with um most likely three packages made up that should give you a basic overview of how to build how to get started how to create something uh on top of ethereum so let's create some debts together shortly my background uh as Chris mentioned I um went into the crypto space full-time I think three three and a half years ago and built a company called sale Bitcoin prediction Market
um still running but now uh I think ethereum is more interesting uh because with ethereum it is with Bitcoin we also had the goal to um about the decentralized prediction marketing maybe it's possible with Bitcoin I think it is possible but it's just way way more complicated uh than with ethereum so what we ended up doing is just using Bitcoin for payment but the logic was just a traditional database thing and a centralized service now with ethereum this is easy to implement also the logic of the prediction Market on the blockchain
so my idea for for this um series of uh of meetups uh will be that I I introduced three small ideas for for simple depth then I will go into um show you what what are the first steps if you want to build them so I will show some developer tools I will show you uh how solidity contracts look like and so on um and then if you want um you can try to build one of those or all three uh in the next week um I mean in the end you only learn it if you if you do it
um and I will Coach them then myself those three debts and um so next time oh yeah I I can then show okay how how what are the possible solution or what is one possible solution and we can discuss where problems you can ask so that that is the idea so um or I will just show how how it will or how you could could have made it so the first step is would be super simple just tic-tac-toe on the blockchain uh why why I mean it's first it's just to do something and to get started but actually I have a use case for it
um there are a lot of ideas about decentralized governance out there so you would have some GAO decentralized autonomous organization that would make decisions on its own or in a decentralized way and the question is can you manipulate it and um so if it is if it is good then it should at least win or get at least a draw in a game of tic-tac-toe right so you could um you could trade a contract and then you could challenge this decentralized mechanism from maybe a voting mechanism or a you can use the prediction Market as a decentralized um
uh governance tools anyway so it should at least um be not possible to manipulate the decentralized decision-making process so that it would move the game of tic-tac-toe so that's the first idea uh the second one second idea is one of one of the things that are most easy to build are just tokens or just some coins and I I haven't or I just had this idea I whatever the note name is um some yeah I don't know who of you know the throttle meme from Bitcoin but anyway uh
so we create a coin and property should be it should be decentralized so it's boring to create a coin where you just say okay I initially create we have a decentralized mechanism to create new coins um and on the other hand it should be maybe or in this case it should still be mainly free so what website here so you get some coin if you lock up either if you look up Denise's for 10 days you get 100 coins if you look up one meter for five days you get Five Points um so those coins are basically you can
get them for free but they still have some scarcity so if you want to make a product some project and you want the users can join more or less for free but you don't want the same problem um then you could for example use this coin so just a second small idea for a depth uh more or coin if you build it you should definitely look into this um standardized um oh yeah so in token standard there is a standards for tokens and if you implement it then other tools will will um or you can use this coin for other
contracts for example our prediction Market you can use uh every thing that Implement is token standard the default wallet uh the ethereum wallet um yeah I can also handle coins and then you can you just have a default interface that you could use like send the coin and see how much balance you have and simple steps Okay the third idea is um I don't know who of you has the same problem I always have the problem away if I need to prepare something or I need to write something I do it really in the last minute so I finished the slides like two hours ago same goes for Caesars or blog posts or whatever so the
idea would be a small step that you commit yourself to do something at a specific deadline uh so let's say you want to write a blog post on whatever you uh and you say Okay I want to do it in the next three days uh what you do is what what the app would do you can lock or you can lock some meter up let's say um 20 years or 100 East or whatever and um and you commit yourself to to write it and actually if you're not if you do not do it then the coins are either destroyed or sent to uh something you really don't like or I don't know you some campaign or whatever so some
some kind of those things right so what what what is needed in addition um you need to specify someone who um evaluates whether or not you have written it um so one idea would be okay you you you write your uh you write the um or you submit uh thing to paste in or to ipfs then you um to get your coins back you submit the links to this um uh where you uploaded your content to my contract and if someone agrees yeah that is in these
three pages of of a blog post then you get your coins back otherwise they are destroyed or whatever so those are just free ideas for small debts and now what are the first steps to build them maybe before you want to build your first your own depth you want to have a look at what that are they already out what what that are already in existence to to get an idea maybe to look uh it's also a good it's a good source to most a lot of them are open source so you can just look at the source code and that's
often the easiest way to get started to start with something similar and exchange uh something just to get it brief impression uh who so far has coded something on ethereum or a written some policy contracts or okay okay not too much but and two is um yeah it was an engineer code error in general or okay perfect okay so maybe one more question to get some sense what at what level I should talk about it uh
some for example who knows the difference between a transaction and a call in ethereum come here okay then uh okay then it's very brief um overview of of how um basic architecture looks like um on the in the app uh in the left uh bottom left that's that's ethereum um part of ethereum is um the evm ethereum virtual machine it's yeah like for example the jvm it's a virtual machine and it's
important for ethereum to make everything deterministic so I mean in the end your contract should be run it will run on on different notes or different uh yeah completely decentralized but everyone has to come to the same results so you need to completely deterministic um virtual machine and that's the EDM um the main maybe the main thing that is added to guarantee that deterministic property is this idea of gas so every every computational step called opcode um cost specific amount of gas and then
you basically avoid the problem to run into an endless loop or I mean you you cannot say solving problem you can stay before you start a program whether it will finally terminate with this idea of Gap so that you specify a limited amount of gas gas start run it then you know it will terminate because either direct internet or it finally runs out of gas then it's amazing right so that is the evm we have we have those smart little smart contracts those are basically ethereum address um with a bunch of price codes
um and we have for those uh contracts we have an addition contract state so just a bunch of key value stores just a bunch of or yeah data and the state of the contract that is I think both medium and I guess all of three uh all three are the big difference towards Bitcoin otherwise you have lots of things that are similar you have block headers you have chain of block headers yes currently proof of work we'll switch to to mistake uh later but but currently other than those three elements um the
ethereum blockchain looks more or less like Bitcoin okay then we have uh those two high-level languages there are more out there but those are the most important uh solidity and serpent so to write a smart contract you don't have to write by code uh thankfully you said you're right high level language salinity I will talk mainly about solidity because it's well it is the language it's has most support um you write your solidity code um you will compile it to byte code you send a transaction to the network um creating a new contract with byte code and then people can interact with
this contact how do they inject in principle they can do it correctly over the command line or directly from using a several tools I will show but for the end User it's nice if they have the depth so UI decentralized application that is um Regular HTML JavaScript and so on and it will it will talk via the RPC interface um to the network to this area network and also yeah you can also create a transaction in the depth and send it to Via this RPC
interface into one node and then it will be propagated to the ethereum network and included into the next block and we'll change the contract state I will I will show show this in a few examples very soon so the next step uh or the next things I want to show you is let's get started let's write some policy code so um the first simplest tool but I think that's that's the right one to to get started is the solidity online compiler so that's how it looks like looks like um you have here's some example uh use crowdfunding
crowdfunding contract solidity is small is pretty straightforward so it's uh statically typed whoops aesthetically typed we have I mean Bool I don't have to talk about that that is an address um that can be a different contract or a regular address where you can just hold hold money on it um I I won't go into details on validity there are tutorials out there there are there is a feature overview but I think it is more or less pretty straightforward so maybe some magic things is this message sender uh message
message value uh but it's easy to figure out what it means so let's have a look um what what else do we find here so the nice thing about this tool is that you have a that you create that you can create a virtual uh evm so uh yeah or you can yeah you have the ebm in your browser which is Javascript uh DM and that means you can yeah virtually deploy it uh in the browser so I I click here on on Create and now I um um yeah created this
basically deployed this contract um in this virtual uh ethereum chain uh and actually now I can um I can I can use the function calls so um or I I see what what's the returning value of of the of the function call uh would be right so here's the bytecode that the interface basically the punch name plus um Plus
the types of of the input here that is what you would need to paste on the command line okay maybe that's I guess it's small to see there but okay that's what you need to paste on the command line to to deploy it on the actual um on the actual uh ethereum ethereum blockchain right to to deploy a contract uh you can also use this ethereum wallet thing what's important here is you can switch between the main Network and the test network is um yeah use use obviously the test
Network first uh get some free ether for example here test dot esearch Camp um you get free ether um then you I mean you have your wallet here you can send free testicer to your to your to your account and then you can hear contracts deploy a new contract you can basically just paste your solidity in there and deploy it okay so let's move on so that's the to look at the architecture what does it
do okay it helps you oh wait let me go yeah right so so what you're creating in um the smart contract um or what would you create with solicit is is this bike code that is on on um on the contract address um and if someone interacts with this address or with this contract then it will trigger it will trigger
um the code you have written and um and those are the rules how the state will will change tough one so yeah right as soon as someone faces transaction and addresses this uh this specific contract then it will trigger whatever so so they can add data um to their transaction and then they can call a function there or they
yeah so they can interact with uh they can basically run the contracts right so the question was uh contracts are public can they can they be called by anyone in principle yes but you can build um you can build stuff into the contract but the first thing would be if then if sender is equal to whatever um or if it's not equal to whatever then just uh terminate so you can build into the contract any uh any logic or any restriction uh you want
to hit series right so the question was will it consume gas and I think the what would you uh if it does but it does not consume the gas of the contract but of of the sender so if you create a transaction then you have to pay for this um you have as the creator of the transaction you have to pay for the gap for the contract uh in principle never pays for the gas it's always uh the person or yeah the person who is creating uh the transaction and this person will pay for the gas the gas
right oh yeah right so it is um it is possible to to calculate how much um will be consumed by a function call so if we so that that is the block Explorer and we can see here at some uh we can see here some some contracts that are deployed on the blockchain and okay I want to show you the byte code give me one moment so yeah the question
is still still how are how is the gas cost gas cost determined and okay contract creation okay I want to show it uh okay let's find the contract that was actually used those contracts are just only created but never used I want to find a contract that was used transaction counts here we go uh maybe I go to contracts that I maybe know okay I don't let's have a look here
state of this contract so you can see um what variables they are or what what storage there is um and then here is for example is a transaction um and what you can see now is for example the DM Trace so those are exactly um on um yeah on Virtual Machine level uh the op code that are all the steps that are triggered by the um by the transaction and each of those steps um there's a list of tools I don't know 50 op codes do you know how many there are how many up codes anyway this is the
op code and each of those OP codes has a specific gas cost so uh simple addition of two numbers of two integers is Maybe three guests or whatever writing storage is way more expensive so every of those those are the up codes um each of those uh yeah has a specific amount of cost and well the total gas costs are just the um to some of of those of course the question now is can you know before you tend to create uh before you created um or when you created the transactions do you know what the costs are and the
answer is the answer is it depends it depends so there are some contracts that will where the contract execution path is always the same no matter what the state is and then the costs are you can calculate the cost exactly before but if if the execution path let's say there is a if variable a is bigger than a then then one then do something very expensive if not then just quit then at the point it's time and point uh at the moment you create transaction you will not necessarily know that when I mean you you send your transaction to the
network but in during this process the state might change because some other transaction comes in early so it's not always completely you cannot 100 calculated before uh when you create a transaction at least not in in every case okay yeah how are these gas costs to determined in do they change well right so so they in principle they do not change or at least it would be a leader a hard walk so I mean uh I I mean it might happen that at some point the whole ethereum Community
agrees and there will be hard fork and then it might change and there was just in the last artwork in Homestead there was new OP code interviews um but in principle those gas costs are part of the protocol and um uh uh and they will not change yeah the question was can you get 30 code from the byte code and the answer is a little bit um so first of all no so it's not directly possible because I mean there are there are
infinite there are I mean there are lots of possible solidity codes that would result in the same bypones right so for example the names of the variables can be whatever so there are interesting tools out there that uh that for example look at the solidity it's a solidity code and try to figure out are they they wait they look at the byte code and they find out what is the signature of of the function and then they scrape GitHub and um up and paste them and just public resources and they try to match them uh here it is the block expert you can
voluntarily if you have to block your contract you can add the solidity code and then the block Explorer can verify okay this then log info can compile the solidity code down to bytecode and see okay that is indeed the same thing so verify that this is that I think for this contract there is a solidity code out there but you cannot get the solidity code for and for the Contracting a principle yeah okay one more yeah once again oh yeah
um it really depends so in principle you can do something I I would say in a normal contract the difference is not big but in principle you can create a contract with where the difference is as big as it gets you can create something where uh where you have in the first line something uh directly quit is is this or go in an infinitive Loop if not and then you have basically very little gas consumption and infinitive custom or or another huge pathway you would just run into out of gas error right so so the concept of
so there's not the direct connection between gas and ether gas is is paid with ether um so what you do is if you create a you specify a gas price so you you specify how much ether you are willing to pay per get um and then the miner can decide um do I want to do I want to process this transaction or not um so what you need to specify you need to specify gas price and you need to specify a gas limit so I want to do not spend more than let's say 100 000 guests uh so with let's say the gas
price 20 so the gas limit is uh is hundred thousand then hundred thousand times twenty is about 2 million okay right so you have to you have to put two million way to the transaction um or yeah you have to pay that upfront and you get back or if if the transactions executed executed and in the end it only costs uh 50 000 then you get half of of the money back but the miner has the guarantee that um I mean the the advantage of this is It's minor just had to look at needs to look at the gas price and then you know it's is fine so currently you can look up um
right so currently the gas price so that that is a nice overview of the uh ethereum Network here you see for example the guests spending her block of the last uh what is it 20 blocks or something you see okay that's the gas limit so all transactions together in a block uh are not allowed to exceed this 4.7 um gas um so here was the block okay that need a top of the limit so there's room for more transactions so it has a number of transactions in a block
and somewhere I guess there is the gas price here right so 20 uh why I'm not sure how much why that is but yeah you can figure that out okay I I try to continue a little bit with my uh with my presentation and then I'm totally open for more questions right so okay so the next tool I shortly want to introduce to you is maybe so the next step or maybe that's this right tool if you want to if you want to do a little bit more than just writing one contract
uh with this online policy thing so it's the command line development management Tool uh called travel uh and I show you shortly how it works so here uh what what do I need oh yeah oh higher or what what truffle does is so first of all okay I think I need to quit one right so
oops so uh test RPC um yeah you you should look for test RPC um JavaScript ethereum and you find the GitHub repo so that that is also now running a virtual ethereum node on my um yeah in in the command line so when you started it just creates a bunch of accounts and those have specific amount of ether um and in truffle Works nicely with this test RPG thing so what what truffle does is so I
make a new folder and I just use truffle in it whoops okay uh what is what is this did is it created the an example example depth so the next step I mean I can show it to you right we have
we have the app with a simple H yeah simple HTML JavaScript style sheets we have here some example contract we have different environments um test so next step would be travel compile I guess so yeah compile step right and we have to do a travel serve
and now what happens is that we that we have a um oh wait okay so uh we we have a small example depth of just the coin and I forgot one step I forgot to deploy the contract on um on this virtual note here so I do a deploy right so you see here just created a new contract at this address because usage I got a
transaction receipt um another contract was created uh again gas usage attack and receipt and now if I refresh the site whoops oh right so I have to do truffle serve again right and now actually here we go um we see we have 10 000 meter um some random coin and yeah you can see in this uh yeah you could find it in the example contract that we initially uh create for ourselves uh 10 000 coins and now we can send for example coins to another
address uh just need to get some ethereum address well uh pop up maybe in the okay here we go so yeah so it created a transaction it sends its transaction to this virtual uh ethereum node and then the state of the in the virtual ethereum node was changed and then the steps as a call to the virtual ethereum node and get this
result and it was changed okay so that is truffle yeah so it helps you it helps you compiling stuff so you just do this traffic compiles and it will compile everything that is in the contract folder you can do Shuffle deploy then it will create all the deployment transactions you can configure it to a little bit more sophisticated deployment script to do uh I mean if you have dependencies that you will first need to deploy that and get the address from this to use this the input from the next
deploy thing and so that um yeah all of this traffic can manage for you it can do things that it would automatically run tests as soon as you uh alter the code yeah just look at these or right right so that that was a really local local network so just here my uh now I I just shut it down and TFA it's a test RPC then then I I spin up uh this local network I could
um to to to go on the local chain uh I could run a gas node uh and a test net to it and then and now uh now I can now now I could use this step on the real test net but if I since I have not deployed it on the real test net um here we go uh we there it does not find the contract so I could yeah if I if I go here for the local thing I I should it should be possible to do the draft or deploy I guess what for now would be necessary that I
unlock my my account so that it could indeed uh spend the test either but in print so it is yeah right so I need to add a minus RPC here I'm not sure if I can make it work now right now I think I could not unlock um signer account and I could do this again but um I think that so what I would need to do is guess catch so now I have a command line tool uh to
work um to speak to the local node and I can do things but I can do things like accounts or what is it yeah here we go yeah my account and maybe I can do something like personal uh and unlock count is count thank you
one uh password so my password my super secure password I think it is password and the time the time I want to unlock it in seconds okay cool let's do it deploy uh okay so maybe it's using sound zero okay and then there was this last thing
that I think the connection or uh my maintenance connection doesn't allow me to connect to the ethereum network I guess but is it uh whoop is it connecting yeah it's right it is so it should work so look oh yeah here we go so it um it indeed deployed this contract on the
test net at this address and we can look it up in a blog Explorer so we go to test uh ether camp and we look after the address so here we go so that's that's the contract we just created uh is it no it's not okay anyway let's let's continue um but that's how it
how it works deploy it to address that address okay maybe one one more try to okay I'm not sure why it is not here this is uh yeah I mean but in principle this would also be available maybe it's introduction is still pending or apparently don't don't know why
uh also this I think this blogger stories is the best but still it's not always reliable so I Blame It On the Block Explorer okay let's continue so that was truffle so just the parts that are marked Brett are things that where truffle helps you with so it helps you to um yeah use instead of the real Network virtual Network to test out a few things I showed you or test net and yeah things like deploy or your contract
I I guess I I haven't used it with certain uh but it should I mean it's if it's pretty sure it's possible yeah what's next just yeah to mention it there is this full IDE called mix so yeah it is it's the full IDE and so there you can see uh you know the current state you can see a few accounts
um you could deploy here something and then you also see the state of the contract I haven't used it too much so um I yeah what can I say so it is it's under development in my opinion it has some usable usability issues but in principle is the it could become a great tool let's put it this way anyone use who use mix so far okay what's your impression of it or oh yeah yeah
you mean this one right so yeah so indeed Tokyo uh here's the um policy contract and then book wait right this is the index in index.html so yeah that is uh a small browser and the principle should be yeah possible to I mean yeah you have it all in one in in one two So within the idea uh your solidity code or whatever as well as your surrounding JavaScript or whatever else right right I mean I mean that that
is a good practice I would say so um I will like to show you yeah so so it is a good thing to have the um validity contract and the um the depth of this interface uh UI in the same structure and um and you will have tools that automatically um create the API so so the interface towards your contract and uh yeah to use it in in the um in the JavaScript that that caused the functions in the let's go on
okay so then there next there is this this web web page IDE called ethereum Studios it's from the same team Easter camp where I just showed you the Black Ops store it's it's currently in close beta um actually I I can show you that it is live it is here we go so here you can see that that is life and um I also I got extra one day ago so I
haven't had too much time to look into it but I mean I I looked at the earlier version a few months ago it will I think it will really be a super interesting tool you can collaborate with different people um on the same contract you can directly here do things like um again set up a virtual node um deploy the contract uh look at the um at the state of the contract do some transaction uh usual stuff you can do with the IDE and actually you can step through so you have a real debugger you can step through uh contracts to the
execution path and all those nice things if you want to go deeper and again he is also the the the structure is that that you have the contract together with some front end for it um let's uh continue right so I think I I think all at this point in time all depths have a web project
um there there are no maybe uh as far as I know there are no native steps that would have um yeah so the common thing is to have a website that you can take over um RPC called from JavaScript to somehow a node and that node can be this can run locally on your computer or can be a remote note all right so the thing I had to add just today because it was only announced today is uh I before I was here what
would be uh uh Microsoft build conference and then Microsoft announced that they added list and support to visual studio I cannot tell you more about it okay so I'm I had something more prepared but uh maybe we leave it at this point and and just end it and and have a if you are interested in a little bit more q a
tired faces just wants to stone for you so I'm not sure where we go yeah statistics so it's six so there there is a list of 40 whatever don't know the exact number but it is six and if it would change uh that wouldn't mean a protocol space or a hot book maybe you meant to try to get it although I I'm more Curious like it for instance so there's no plan for this time we know
right the question the question was again what's the ratio between gas and Easter so how and you can set it yourself so you can if you if you create a transaction you can set your own gas price so what are you willing to pay per gas in Ethan and then a miner can decide to accept it or not so it's like a Bitcoin transaction where you can set the transaction fee right so so the the total the total amount of gas that will be used that's totally that's deterministic and Depends only on what top codes I use during the surface but what you are so the website
the price is 10 000 guests but what you what but what you pay per guess that is a different question and you can pay and best to get price so uh so if you think about it then okay so you you want to drive from here to New York so it's clear that that will be selling so much gallons of of uh gas uh but what you want what but but the price you pay per gallon that's a different story and that's something you can you can um yeah you can set it and then you can sorry you can basically make an offer and then a miner can say okay I take this offer and I throw or I I kind of I tell you the guests for this price
I mean it's it's not literally I mean no so uh yeah the question was what is the transaction runs out of gas and um to to not end up in a situation where you have some invalid state so for example you you send already the money to someone so you increase already the amount amount of the other account but you have not reduced yet uh so what ethereum does is you if the transaction runs out of gas then just all changes will be reverted it will just completely
be reverted but you never nevertheless have to pay uh the gas so you lose all the gas um and the transaction are is reverted so you should know there's this difference between a call um and the transactions so at any point you can just the call is something like a virtual transaction so you at any point you can uh evaluate the country and get the result of it so in your depth you can show the results or in the current state obviously without paying it so you
always the only thing where you need to pay gas is if you want to change the state so if you want to do it right and that is a transaction um the terminology is kind of confusing because the transaction can then trigger other calls um that are that are right so uh I think we are still looking for the right wording between reads and writes and transaction and calls yeah that's correct so a call is no one knows about it you just query your own
right so to predict right so so another difference between the prediction the call is the call you just ask your local node and it will answer it right the transaction is something a piece of data that you need to sign with your signature this piece of data gets distributed uh in this your network it's mental memorable like a Bitcoin transaction and then minor uh some Miner who includes the next block as hopefully your transactions mempool and will will run it and the others will also run it to validate whether or not this new block was was valid because they uh end up to the same thing okay so I I skipped this um I skipped this slide um or the idea behind it still there
different ways to connect your depth to uh to ethereum um I think I leave this for the next uh presentation so the last thing I want to announce um to all of you is I yeah there's the whoever is interested in us quick trip to New York so there's a lot of chain Workshop um conference next week for fifth uh April just uh that is last two hours before the presentation I made uh and if you want to get in and get a up to all right 75 discount code
uh asked me okay thanks I don't know whether or not they play they accept either okay so that was it now from my side thank you very much for your attention so I'm totally happy to answer more questions but I had the feeling that not everyone is interested in more questions so I just want to give you a chance to speak directly to each other and
they're more yeah they're more okay let's jump you can finish these questions up a little bit later if you want to uh help or propose uh to help host or uh present talk at the future events please come talk to me anyway let's thank Martin reporting right