This shows you the differences between two versions of the page.
fob:laboratoare:03 [2022/10/27 01:31] costin.carabas [Never Sea Festival Smart Contract] |
fob:laboratoare:03 [2023/03/01 18:33] (current) costin.carabas |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== Practical Session 03. ===== | + | ===== Smart Contract ===== |
==== Never Sea Festival Smart Contract ==== | ==== Never Sea Festival Smart Contract ==== | ||
Line 6: | Line 6: | ||
Starting from Smart Contract template you have to add more features to coordinate the event. | Starting from Smart Contract template you have to add more features to coordinate the event. | ||
+ | <hidden> | ||
<note important> | <note important> | ||
Install docker using [[https://docs.docker.com/engine/install/ubuntu/|this link]]. | Install docker using [[https://docs.docker.com/engine/install/ubuntu/|this link]]. | ||
Line 11: | Line 12: | ||
You can find Elrond docker images at [[https://hub.docker.com/r/elrondnetwork/build-contract-rust/tags|this link]]. | You can find Elrond docker images at [[https://hub.docker.com/r/elrondnetwork/build-contract-rust/tags|this link]]. | ||
</note> | </note> | ||
+ | </hidden> | ||
Clone [[https://github.com/systems-cs-pub-ro/Foundation-Of-Blockchains.git|Foundation of Blockchain repo]] and go to **lab03** folder. | Clone [[https://github.com/systems-cs-pub-ro/Foundation-Of-Blockchains.git|Foundation of Blockchain repo]] and go to **lab03** folder. | ||
Line 17: | Line 19: | ||
Use [[https://docs.elrond.com/developers/tutorials/counter/#build-the-contract]] to build the Smart Contract. | Use [[https://docs.elrond.com/developers/tutorials/counter/#build-the-contract]] to build the Smart Contract. | ||
+ | |||
+ | <note tip>Use the parameter''--arguments'' to provide the arguments of **init** function.</note> | ||
+ | |||
+ | <note warning>Check the deployment on the explorer. Do not assume that the contract was successfully deployed if there are no command line errors.</note> | ||
<note tip> | <note tip> | ||
- | ''erdpy --verbose contract deploy --help'' | + | ''erdpy contract deploy --help'' |
</note> | </note> | ||
- | To check that the contract was successfully built, verify that there was a **wasm** file generate: ''output/neversea.wasm''. | + | To check that the contract was successfully **built**, verify that there was a **wasm** file generate: ''output/neversea.wasm''. |
- | This is the compiled code of you contract. | + | This is the compiled code of your contract. |
+ | To check that the contract was successfully **deployed**, check the devnet/testnet. | ||
- | === Modify the registration fee to enable Early Bird and Full price access === | + | <note warning>Any modification of the contract must be succeeded by a compilation and deployment!</note> |
+ | |||
+ | <note warning>There are no float/double types. 1 EGLD is actually 1 followed by 18 zeros. This way there are no decimal issues.</note> | ||
+ | |||
+ | == Make a contract call to register a user. == | ||
+ | == Make a contract call to view the registered users. == | ||
=== Modify the registration endpoint to enable VIP access === | === Modify the registration endpoint to enable VIP access === | ||
- | === Create a feature to enable 50% discount vouchers for friends and partners === | + | == Create a new storage mapper registration_fee_vip. == |
+ | == Create a new UnorderedSetMapper storage mapper (vip_participants) to save the VIPs == | ||
+ | In the registration endpoint, make a verification of the tokens received. If the tokens received is **registration_fee_vip**, add the user to **vip_participants**, if the amount is **registration_fee**, add them to **participants**, else, deny registration. | ||
+ | |||
+ | === Modify the registration fee to enable Early Bird and Full price access === | ||
+ | |||
+ | == Create a new endpoint that modifies the *registration_fee* and *registration_fee_vip* storage mapper. == | ||
+ | This endpoint should be call only by the owner. | ||
+ | <note tip>Use #[only_owner] endpoint annotation.</note> | ||
+ | |||
+ | After the Early Bird expires, the admin will call this endpoint. | ||
+ | |||
+ | === BONUS: Create a feature to enable 50% discount vouchers for friends and partners === | ||
+ | |||
+ | Create a list of hardcoded discount codes. | ||
+ | == Create a new endpoint that receives a discount code as a parameter and registers a user with 50% discount == |