Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.16 KB | None | 0 0
  1. pragma solidity ^0.4.6;
  2.  
  3. contract owned {
  4. address public owner;
  5.  
  6. function owned() {
  7. owner = msg.sender;
  8. }
  9.  
  10. modifier onlyOwner {
  11. if (msg.sender != owner) throw;
  12. _;
  13. }
  14.  
  15. function transferOwnership(address newOwner) onlyOwner {
  16. owner = newOwner;
  17. }
  18. }
  19.  
  20.  
  21. contract ownedReg is owned {
  22.  
  23. mapping(uint => address) public beneficiary;
  24.  
  25. mapping(address =>
  26. mapping(uint =>
  27. mapping(address => bool))) public approvals;
  28.  
  29. mapping(uint => mapping(bytes32=>uint)) public iData;
  30. mapping(uint => mapping(bytes32=>string)) public sData;
  31. mapping(uint => mapping(bytes32=>bytes32)) public hData;
  32.  
  33. uint public lastID;
  34.  
  35. function nextID() returns (uint) {
  36. return ++lastID;
  37. }
  38.  
  39. function createId(address _beneficiary) onlyOwner returns (uint) {
  40. var id = nextID();
  41. beneficiary[lastID] = _beneficiary;
  42. }
  43.  
  44. function setString(uint id, bytes32 name, string str) onlyOwner {
  45. sData[id][name] = str;
  46. }
  47.  
  48. function setInt(uint id, bytes32 name, uint str) onlyOwner {
  49. iData[id][name] = str;
  50. }
  51.  
  52. function setHash(uint id, bytes32 name, bytes32 hash) onlyOwner {
  53. hData[id][name] = hash;
  54. }
  55.  
  56. function transfer(uint id, address to)
  57. {
  58. if(beneficiary[id] != msg.sender) throw;
  59. beneficiary[id] = to;
  60. }
  61.  
  62. function approve(uint id, address to, bool allowed) returns (bool ok)
  63. {
  64. approvals[msg.sender][id][to] = allowed;
  65. return true;
  66. }
  67.  
  68. function transferFrom(uint id, address to) returns (bool ok)
  69. {
  70. var targetBeneficiary = beneficiary[id];
  71.  
  72. if(approvals[targetBeneficiary][id][msg.sender] != true) throw;
  73.  
  74. beneficiary[id] = to;
  75. approvals[targetBeneficiary][id][msg.sender] = false;
  76.  
  77. return true;
  78. }
  79. }
  80.  
  81. contract carRegistry is ownedReg {
  82.  
  83. string public name = "CarRegistry";
  84.  
  85. bytes32 public descriptionHash = sha3("carDescription"); // replace with constants
  86. bytes32 public serialNumberHash = sha3("serialNumber");
  87. bytes32 public dateIssuedHash = sha3("dateIssued");
  88.  
  89. function NewToken(address receiver, string carDescription, string serialNumber) onlyOwner returns (uint carTokenID) {
  90.  
  91. carTokenID = createId(receiver);
  92.  
  93. setString(carTokenID, descriptionHash, carDescription);
  94. setString(carTokenID, serialNumberHash, serialNumber);
  95. setInt(carTokenID,dateIssuedHash,block.timestamp);
  96. }
  97.  
  98. function getCarDetails(uint carTokenID) constant returns (
  99. address _beneficiary,
  100. string carDescription,
  101. string serialNumber,
  102. uint dateIssued)
  103. {
  104. _beneficiary = beneficiary[carTokenID];
  105. carDescription = sData[carTokenID][descriptionHash];
  106. serialNumber = sData[carTokenID][serialNumberHash];
  107. dateIssued = iData[carTokenID][dateIssuedHash];
  108. }
  109.  
  110.  
  111. function changeContractName(string newName) onlyOwner {
  112. name = newName;
  113. }
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement