-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathleilao_storage.sol
62 lines (47 loc) · 2.33 KB
/
leilao_storage.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
pragma solidity 0.4.25;
contract LeilaoStorage {
uint count_item;
uint count_itens_disponiveis;
event ItemAdicionado(string titulo, string descricao, uint valor_inicial, uint diferenca_minima, uint data_expiracao);
struct Item {
address dono_lance_atual; // Endereco que esta vencendo o leilao
address dono; // Endereco que adicionou o item para leilao
string titulo; // Titulo do item
string descricao; // Descricao do item
uint token; // Token do item (contagem de itens)
uint valor_inicial; // Valor inicial (base) do item
uint lance_atual; // Valor atual do item
uint diferenca_minima; // Diferenca minima entre lances
uint data_expiracao; // Duração do item no leilão
}
modifier onlyOwnerOfToken (address _from, uint256 _tokenId) {
require(_from == _tokenOwner[_tokenId]);
_;
}
modifier onlyOwnerOfItem(uint256 _item) {
require(msg.sender == itens[_item].dono, "Você não pode finalizar um leilao do qual não é o dono.");
_;
}
mapping (uint => Item) public itens; // mapping de itens
mapping (address => uint256) public ownerTokenCount; // Armazena o saldo de cada conta que possui tokens
mapping (uint256 => address) internal _tokenOwner; // Relaciona o token com o dono
Item[] public itens_disponiveis;
function adicionar_item(string _titulo, string _descricao, uint _valor_inicial, uint _diferenca_minima, uint _qtd_dias) public {
count_item++;
count_itens_disponiveis++;
Item memory novo_item = Item(0,
msg.sender,
_titulo,
_descricao,
count_item,
_valor_inicial,
_valor_inicial,
_diferenca_minima,
(now + _qtd_dias * 1 days));
ownerTokenCount[this]++;
_tokenOwner[novo_item.token] = this;
itens[count_item] = novo_item;
itens_disponiveis.push(novo_item);
emit ItemAdicionado(novo_item.titulo, novo_item.descricao, novo_item.valor_inicial, novo_item.diferenca_minima, novo_item.data_expiracao);
}
}