Learn Solidity - Build Decentralized Application in Ethereum

Learn Solidity: Events & Logging in Solidity

In this post, we will learn how to declare & use events for logging in Solidity Language. [pastacode lang=”javascript” manual=”pragma%20solidity%200.4.8%3B%0A%0A%0A%2F%2F%20Events%20are%20the%20way%20to%20inform%20external%20monitoring%20entities%20about%20the%20%0A%2F%2F%20cenrtain%20activities%20in%20the%20smart%20contracts%0A%2F%2F%20they%20can%20also%20be%20used%20as%20a%20log%20in%20the%20system.%0A%0A%2F%2F%20lets%20checkout%20out%20this%20coin%20example%20where%20we%20will%20jump%20deeper%0A%2F%2F%20in%20the%20next%20lecture.%0A%0A%0A%0Acontract%20Coin%20%7B%0A%20%20%20%20%2F*%0A%20%20%20%20*%20%40title%20A%20Simple%20Subcurrency%20Example%0A%20%20%20%20*%20%40author%20Toshendra%20Sharma%0A%20%20%20%20*%20%40notice%20Example%20for%20the%20Solidity%20Course%0A%20%20%20%20*%20%40dev%20This%20is%20only%20for%20demo%20the%20simple%20Coin%20example%0A%20%20%20%20*%20%0A%20%20%20%20*%2F%0A%20%20%20%20address%20public%20minter%3B%0A%20%20%20%20uint%20public%20totalCoins%3B%0A%0A%0A%20%20%20%20event%20LogCoinsMinted(address%20deliveredTo%2C%20uint%20amount)%3B%0A%20%20%20%20event%20LogCoinsSent(address%20sentTo%2C%20uint%20amount)%3B%0A%0A%20%20%20%20%2F%2F%20Please%20note%20the%20caps%20lock.%20Your%20mist%20walled%20will%20you%20capital%20letters%20%0A%20%20%20%20%2F%2F%20to%20seperate%20th%20event%20name%20into%20a%20meaningful%20name.%20%0A%0A%20%20%20%20%2F%2F%20As%20I%20said%20Events%20allow%20the%20convenient%20usage%20of%20the%20EVM%20logging%20facilities.%20%0A%20%20%20%20%2F%2F%20Events%20are%20inheritable%20members%20of%20contracts.%20When%20they%20are%20called%2C%20%0A%20%20%20%20%2F%2F%20they%20cause%20the%20arguments%20to%20be%20stored%20in%20the%20transaction’s%20log.%20%0A%20%20%20%20%2F%2F%20Up%20to%20three%20parameters%20can%20receive%20the%20attribute%20indexed%20which%20%0A%20%20%20%20%2F%2F%20will%20cause%20the%20respective%20arguments%20to%20be%20treated%20as%20log%20topics%20%0A%20%20%20%20%2F%2F%20instead%20of%20data.%20The%20hash%20of%20the%20signature%20of%20the%20event%20is%20one%20of%20%0A%20%20%20%20%2F%2F%20the%20topics%20except%20you%20declared%20the%20event%20with%20anonymous%20specifier.%20%0A%20%20%20%20%2F%2F%20All%20non-indexed%20arguments%20will%20be%20stored%20in%20the%20data%20part%20of%20the%20log.%20%0A%0A%20%20%20%20mapping%20(address%20%3D%3E%20uint)%20balances%3B%0A%20%20%20%20function%20Coin(uint%20initialCoins)%20%7B%0A%20%20%20%20%20%20%20%20minter%20%3D%20msg.sender%3B%0A%20%20%20%20%20%20%20%20totalCoins%20%3D%20initialCoins%3B%0A%20%20%20%20%20%20%20%20balances%5Bminter%5D%20%3D%20initialCoins%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%2F%20%40notice%20Mint%20the%20coins%0A%20%20%20%20%2F%2F%2F%20%40dev%20This%20does%20not%20return%20any%20value%0A%20%20%20%20%2F%2F%2F%20%40param%20owner%20address%20of%20the%20coin%20owner%2C%20amount%20amount%20of%20coins%20to%20be%20delivered%20to%20owner%0A%20%20%20%20%2F%2F%2F%20%40return%20Nothing%0A%20%20%20%20function%20mint(address%20owner%2C%20uint%20amount)%20%7B%0A%20%20%20%20%20%20%20%20if%20(msg.sender%20!%3D%20minter)%20return%3B%0A%20%20%20%20%20%20%20%20balances%5Bowner%5D%20%2B%3D%20amount%3B%0A%20%20%20%20%20%20%20%20totalCoins%20%2B%3D%20amount%3B%0A%20%20%20%20%20%20%20%20LogCoinsMinted(owner%2C%20amount)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20function%20send(address%20receiver%2C%20uint%20amount)%20%7B%0A%20%20%20%20%20%20%20%20if%20(balances%5Bmsg.sender%5D%20%3C%20amount)%20return%3B%0A%20%20%20%20%20%20%20%20balances%5Bmsg.sender%5D%20-%3D%20amount%3B%0A%20%20%20%20%20%20%20%20balances%5Breceiver%5D%20%2B%3D%20amount%3B%0A%20%20%20%20%20%20%20%20LogCoinsSent(receiver%2C%20amount)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20function%20queryBalance(address%20addr)%20constant%20returns%20(uint%20balance)%20%7B%0A%20%20%20%20%20%20%20%20return%20balances%5Baddr%5D%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20function%20killCoin()%20returns%20(bool%20status)%20%7B%0A%20%20%20%20%20%20%20%20if%20(msg.sender%20!%3D%20minter)%20throw%3B%0A%20%20%20%20%20%20%20%20selfdestruct(minter)%3B%0A%20%20%20%20%7D%0A%7D” message=”” highlight=”” provider=”manual”/]  
Read More