This post is the continuation of:
In this example, we can use an Ethereum smart-contract to register products and its value in Ether. Also, we can use the same smart-contract to be called by the people to buy the products. Very easy to implement and to connect to a simple Decentralized Store or Marketplace App (Dapp).
Let’s see the example:
pragma solidity ^0.4.16; contract owned { address public owner; function owned() public { owner = msg.sender; } modifier onlyOwner { require(msg.sender == owner); _; } function transferOwnership(address newOwner) onlyOwner public { owner = newOwner; } } contract Contrato_contacto_legal is owned{ struct Contrato { uint256 coste_ether; bool pagado; address cuenta_pagador; } mapping (uint256 => Contrato) public contratos; event Alta(uint256 referencia, uint256 coste_en_ether); event Compra( uint256 referencia, uint256 coste_en_ether, address comprador); function dar_alta_contrato( uint256 _referencia, uint256 _coste_en_ether ) onlyOwner public { contratos[ _referencia] = Contrato(_coste_en_ether, false, owner); Alta( _referencia, _coste_en_ether); } function pagar_contrato( uint256 _referencia) payable public { require ( msg.value >= contratos[ _referencia].coste_ether ); owner.transfer(msg.value); contratos[ _referencia] = Contrato(msg.value, true, msg.sender); Compra(_referencia, msg.value, msg.sender); } }
In this contract we can see as always the “Owned” contract and functions , and the primary contract or “Contrato_contacto_legal”
Basically there are two functions:
- OnlyOwner can call “dar_alta_contrato” to register an asset and its value ( uint256 _referencia, uint256 _coste_en_ether )
- Everybody can call “pagar_contrato” (but using Ether during the call because is payable). With param reference (and the Ether send during the call).
At the end of the function there is always a call to an Event. We can see a track of the events already done.
The Events are useful to trigger actions in the Dapp after a transaction/request is done.
Everybody can read the contract in Rinkeby in this address
For example, we can do a simple query to know the status of the product with reference “11”
If we have the Owner Key installed in MetaMask, we can do more things with MetaMask, we can call the Write functions!!
This is an amazing new feature of Etherscan and Rinkeby!
Now you are ready to start your first Dapp initial concepts.
By MrAddon