-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathEvidence.sol
More file actions
64 lines (55 loc) · 1.94 KB
/
Evidence.sol
File metadata and controls
64 lines (55 loc) · 1.94 KB
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
63
64
contract Evidence{
uint CODE_SUCCESS = 0;
uint FILE_NOT_EXIST = 3002;
uint FILE_ALREADY_EXIST = 3003;
uint USER_NOT_EXIST = 3004;
struct FileEvidence{
bytes fileHash;
uint fileUploadTime;
address owner;
}
struct User{
address addr;
uint count;
mapping(bytes => FileEvidence) filemap;
}
// 文件hash对应的文件存证实体
mapping(bytes => FileEvidence) fileEvidenceMap;
// 交易hash对应的文件存证实体
mapping(bytes => FileEvidence) tx2FileEvidenceMap;
mapping(address => User) userMap;
address[] userList;
function saveEvidence(bytes fileHash,uint fileUploadTime) returns(uint code){
//get filemap under sender
User storage user = userMap[msg.sender];
if (user.addr == 0x0) {
user.addr = msg.sender;
userList.push(msg.sender);
}
FileEvidence storage fileEvidence = user.filemap[fileHash];
if(fileEvidence.fileHash.length != 0){
return FILE_ALREADY_EXIST;
}
user.count += 1;
fileEvidence.fileHash = fileHash;
fileEvidence.fileUploadTime = fileUploadTime;
fileEvidence.owner = msg.sender;
user.filemap[fileHash] = fileEvidence;
return CODE_SUCCESS;
}
function getEvidence(bytes fileHash) returns(uint code,bytes fHash,uint fUpLoadTime,address saverAddress) {
//get filemap under sender
User storage user = userMap[msg.sender];
if (user.addr == 0x0) {
return (USER_NOT_EXIST,"",0,msg.sender);
}
FileEvidence memory fileEvidence = user.filemap[fileHash];
if(fileEvidence.fileHash.length == 0){
return (FILE_NOT_EXIST,"",0,msg.sender);
}
return(CODE_SUCCESS,fileEvidence.fileHash,fileEvidence.fileUploadTime,msg.sender);
}
function getUsers() returns(address[] users){
return userList;
}
}