Skip to content

Instantly share code, notes, and snippets.

@RobertoC27
Last active August 28, 2018 18:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save RobertoC27/6af3cd4feabcd86194da5b5c69146d9d to your computer and use it in GitHub Desktop.
Save RobertoC27/6af3cd4feabcd86194da5b5c69146d9d to your computer and use it in GitHub Desktop.
code snippets for UVG lab
[
{
"constant": true,
"inputs": [],
"name": "checkFunds",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "approvedComprador",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "comprador",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "refundComprador",
"outputs": [],
"payable": true,
"stateMutability": "payable",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "okComprador",
"outputs": [],
"payable": true,
"stateMutability": "payable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "vendedor",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "completado",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "titulo",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_titulo",
"type": "address"
}
],
"name": "setTitulo",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_value",
"type": "uint256"
}
],
"name": "setValue",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "creador",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "approvedVendedor",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "executeSale",
"outputs": [],
"payable": true,
"stateMutability": "payable",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "returnProperty",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_comprador",
"type": "address"
}
],
"name": "setComprador",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_vendedor",
"type": "address"
}
],
"name": "setVendedor",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "okVendedor",
"outputs": [],
"payable": true,
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"name": "_vendedor",
"type": "address"
},
{
"name": "_comprador",
"type": "address"
},
{
"name": "_titulo",
"type": "address"
}
],
"payable": true,
"stateMutability": "payable",
"type": "constructor"
}
]
[
{
"constant": false,
"inputs": [
{
"name": "_reciever",
"type": "address"
}
],
"name": "fundAccount",
"outputs": [],
"payable": true,
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"payable": true,
"stateMutability": "payable",
"type": "constructor"
},
{
"constant": false,
"inputs": [],
"name": "updateAvailable",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "available",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "owner",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "owner2",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}
]
[
{
"constant": true,
"inputs": [],
"name": "creator",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "newOwner",
"type": "address"
}
],
"name": "setOwner",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "location",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "description",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "owner",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "locked",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "changeLock",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"name": "_description",
"type": "string"
},
{
"name": "_location",
"type": "string"
},
{
"name": "_owner",
"type": "address"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
}
]
Faucet: 0x208580fb8c39facbd0db56f987ea0cae8b8c70f9
0x6080604052604051606080610b798339810160409081528151602083015191909201516003805433600160a060020a031991821617909155600180548216600160a060020a03958616179055600280548216938516939093179092556000805490921692169190911781556005805460ff19169055610af590819061008490396000f3006080604052600436106100f05763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166308d233dc81146100f55780630ec5d0c71461011c5780630f50b6e7146101455780631cef017a1461017657806323b71df3146101805780633182237f14610188578063351a56401461019d578063391b1ab0146101b25780633f8ef813146101c757806355241077146101e857806392ebdcd214610200578063a434287214610215578063aadb5bf11461022a578063b78e00e214610232578063d572b5ad14610247578063ec22953a14610268578063fd0de4a914610289575b600080fd5b34801561010157600080fd5b5061010a610291565b60408051918252519081900360200190f35b34801561012857600080fd5b50610131610296565b604080519115158252519081900360200190f35b34801561015157600080fd5b5061015a6102a4565b60408051600160a060020a039092168252519081900360200190f35b61017e6102b3565b005b61017e610404565b34801561019457600080fd5b5061015a61049d565b3480156101a957600080fd5b506101316104ac565b3480156101be57600080fd5b5061015a6104b5565b3480156101d357600080fd5b5061017e600160a060020a03600435166104c4565b3480156101f457600080fd5b5061017e600435610543565b34801561020c57600080fd5b5061015a610598565b34801561022157600080fd5b506101316105a7565b61017e6105b6565b34801561023e57600080fd5b5061017e610773565b34801561025357600080fd5b5061017e600160a060020a03600435166108d8565b34801561027457600080fd5b5061017e600160a060020a036004351661098f565b61017e610a46565b303190565b600554610100900460ff1681565b600254600160a060020a031681565b60055460ff1615610334576040805160e560020a62461bcd02815260206004820152603e60248201527f4c612076656e74612079612066756520636f6d706c65746164612c206c61206f60448201527f7065726163696f6e206e6f20736520707565646520636f6d706c657461720000606482015290519081900360840190fd5b600254600160a060020a031633146103bc576040805160e560020a62461bcd02815260206004820152602e60248201527f536f6c6f20656c20636f6d707261646f722070756564652063616d626961722060448201527f6573746520706172616d6574726f000000000000000000000000000000000000606482015290519081900360840190fd5b600254604051600160a060020a0390911690303180156108fc02916000818181858888f193505050501580156103f6573d6000803e3d6000fd5b506005805461ff0019169055565b600254600160a060020a0316331461048c576040805160e560020a62461bcd02815260206004820152602e60248201527f536f6c6f20656c20636f6d707261646f722070756564652063616d626961722060448201527f6573746520706172616d6574726f000000000000000000000000000000000000606482015290519081900360840190fd5b6005805461ff001916610100179055565b600154600160a060020a031681565b60055460ff1681565b600054600160a060020a031681565b600154600160a060020a03163314610514576040805160e560020a62461bcd02815260206004820152601e6024820152600080516020610aaa833981519152604482015290519081900360640190fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600154600160a060020a03163314610593576040805160e560020a62461bcd02815260206004820152601e6024820152600080516020610aaa833981519152604482015290519081900360640190fd5b600455565b600354600160a060020a031681565b60055462010000900460ff1681565b600254600090600160a060020a03163314806105dc5750600154600160a060020a031633145b1515610632576040805160e560020a62461bcd02815260206004820181905260248201527f6e6f206175746f72697a61646f207061726120656a656375746172206573746f604482015290519081900360640190fd5b60055460ff161561068d576040805160e560020a62461bcd02815260206004820152601d60248201527f636f6d70726176656e74612079612066756520636f6d706c6574616461000000604482015290519081900360640190fd5b600554610100900460ff1680156106ac575060055462010000900460ff165b15610770575060008054600254604080517ff2fde38b000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015290519190921692839263f2fde38b926024808301939282900301818387803b15801561071b57600080fd5b505af115801561072f573d6000803e3d6000fd5b5050600154604051600160a060020a039091169250303180156108fc029250906000818181858888f1935050505015801561076e573d6000803e3d6000fd5b505b50565b60055460009060ff16156107f7576040805160e560020a62461bcd02815260206004820152603e60248201527f4c612076656e74612079612066756520636f6d706c65746164612c206c61206f60448201527f7065726163696f6e206e6f20736520707565646520636f6d706c657461720000606482015290519081900360840190fd5b600154600160a060020a03163314610847576040805160e560020a62461bcd02815260206004820152601e6024820152600080516020610aaa833981519152604482015290519081900360640190fd5b5060008054600154604080517ff2fde38b000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015290519190921692839263f2fde38b926024808301939282900301818387803b1580156108b157600080fd5b505af11580156108c5573d6000803e3d6000fd5b50506005805462ff000019169055505050565b600354600160a060020a03163314610960576040805160e560020a62461bcd02815260206004820152602d60248201527f736f6c6f20656c2063726561646f722064656c20636f6e747261746f2070756560448201527f6465206861636572206573746f00000000000000000000000000000000000000606482015290519081900360840190fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600354600160a060020a03163314610a17576040805160e560020a62461bcd02815260206004820152602d60248201527f736f6c6f20656c2063726561646f722064656c20636f6e747261746f2070756560448201527f6465206861636572206573746f00000000000000000000000000000000000000606482015290519081900360840190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600154600160a060020a03163314610a96576040805160e560020a62461bcd02815260206004820152601e6024820152600080516020610aaa833981519152604482015290519081900360640190fd5b6005805462ff00001916620100001790555600536f6c6f20656c2076656e6465646f7220656a656375746172206573746f0000a165627a7a723058201f92887681476babb88826431cc4b064b2ebd56e32a6178d0f8024a143f810540029
0x608060405234801561001057600080fd5b506040516106963803806106968339810160409081528151602080840151928401516004805460ff1916600190811790915560028054600160a060020a031990811633179091558154600160a060020a038416911617905591840180519094939093019261008491600091908601906100a1565b5081516100989060039060208501906100a1565b5050505061013c565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100e257805160ff191683800117855561010f565b8280016001018555821561010f579182015b8281111561010f5782518255916020019190600101906100f4565b5061011b92915061011f565b5090565b61013991905b8082111561011b5760008155600101610125565b90565b61054b8061014b6000396000f30060806040526004361061008d5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166302d05d3f811461009257806313af4035146100c3578063516f279e146100e65780637284e416146101705780638da5cb5b14610185578063cf3090121461019a578063f07b62be146101c3578063f2fde38b146101d8575b600080fd5b34801561009e57600080fd5b506100a76101f9565b60408051600160a060020a039092168252519081900360200190f35b3480156100cf57600080fd5b506100e4600160a060020a0360043516610208565b005b3480156100f257600080fd5b506100fb6102fa565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561013557818101518382015260200161011d565b50505050905090810190601f1680156101625780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561017c57600080fd5b506100fb610388565b34801561019157600080fd5b506100a76103e3565b3480156101a657600080fd5b506101af6103f2565b604080519115158252519081900360200190f35b3480156101cf57600080fd5b506100e46103fb565b3480156101e457600080fd5b506100e4600160a060020a0360043516610497565b600254600160a060020a031681565b600254600160a060020a0316331461026a576040805160e560020a62461bcd02815260206004820152601a60248201527f4f6e6c792063726561746f722063616e206368616e6765206974000000000000604482015290519081900360640190fd5b600154600160a060020a0316156102cb576040805160e560020a62461bcd02815260206004820152601160248201527f6f776e6572206973206e6f74206e756c6c000000000000000000000000000000604482015290519081900360640190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103805780601f1061035557610100808354040283529160200191610380565b820191906000526020600020905b81548152906001019060200180831161036357829003601f168201915b505050505081565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103805780601f1061035557610100808354040283529160200191610380565b600154600160a060020a031681565b60045460ff1681565b600154600160a060020a03163314610483576040805160e560020a62461bcd02815260206004820152602160248201527f4f6e6c79206f776e65722063616e207472616e73666572206f776e657273686960448201527f7000000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6004805460ff19811660ff90911615179055565b600154600160a060020a031633146102cb576040805160e560020a62461bcd02815260206004820152602160248201527f4f6e6c79206f776e65722063616e207472616e73666572206f776e657273686960448201527f7000000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd00a165627a7a72305820973501e4aaa2b73fe3d6981240e12b1d2205b8ef3ddac8408d570529285662e40029
pragma solidity ^0.4.18;
contract CompraVenta {
address public titulo;
address public vendedor;
address public comprador;
address public creador;
uint private valor;
bool public completado;
bool public approvedComprador;
bool public approvedVendedor;
modifier onlyCreador() {
require(msg.sender == creador, "solo el creador del contrato puede hacer esto");
_;
}
modifier onlyComprador() {
if(msg.sender != comprador)
revert("Solo el comprador puede cambiar este parametro");
_;
}
modifier onlyVendedor() {
if(msg.sender != vendedor)
revert("Solo el vendedor ejecutar esto");
_;
}
modifier beforeCompletion() {
if(completado)
revert('La venta ya fue completada, la operacion no se puede completar');
_;
}
modifier onlyInvolved() {
require((msg.sender == comprador) || (msg.sender == vendedor), "no autorizado para ejecutar esto");
_;
}
constructor(address _vendedor, address _comprador, address _titulo) payable public {
creador = msg.sender;
vendedor = _vendedor;
comprador = _comprador;
titulo = _titulo;
completado = false;
}
function setValue(uint _value) onlyVendedor public {
valor = _value;
}
function setTitulo(address _titulo) onlyVendedor public {
titulo = _titulo;
}
function setComprador(address _comprador) onlyCreador public {
comprador = _comprador;
}
function setVendedor(address _vendedor) onlyCreador public {
vendedor = _vendedor;
}
function okComprador() payable onlyComprador public {
approvedComprador = true;
}
function okVendedor() payable onlyVendedor public {
approvedVendedor = true;
//revisar si ya tengo los fondos y completo el trato
// titulo.call(bytes4(keccak256("transferOwnership(address)")), address(this));
}
function executeSell() payable onlyInvolved public {
require(completado == false, "compraventa ya fue completada");
if(approvedComprador && approvedVendedor){
TituloPropiedad t = TituloPropiedad(titulo);
t.transferOwnership(comprador);
vendedor.transfer(address(this).balance);
}
}
function returnProperty() beforeCompletion onlyVendedor public {
// titulo.call(bytes4(keccak256("transferOwnership(address)")), vendedor);
TituloPropiedad t = TituloPropiedad(titulo);
t.transferOwnership(vendedor);
approvedVendedor = false;
}
function refundComprador() payable beforeCompletion onlyComprador public {
comprador.transfer(address(this).balance);
approvedComprador = false;
}
function checkFunds() view public returns(uint) {
return address(this).balance;
}
}
contract TituloPropiedad {
function transferOwnership(address newOwner) public;
function changeLock() public;
function setOwner(address newOwner) public;
}
pragma solidity ^0.4.18;
contract Faucet {
address public owner;
address public owner2;
bool public available;
mapping (address => bool) fundedAccounts;
modifier onlyOwner() {
if(msg.sender != owner)
revert("Only owner can change availability");
_;
}
modifier duringAvailable() {
if(!available)
revert("Contract not ready to send ether");
_;
}
constructor() public payable {
owner = msg.sender;
available = false;
}
function updateAvailable() onlyOwner public {
available = !available;
}
function fundAccount(address _reciever) duringAvailable public payable {
require(fundedAccounts[_reciever] == false);
fundedAccounts[_reciever] = true;
_reciever.transfer(100 ether);
}
}
pragma solidity ^0.4.18;
contract TituloPropiedad {
string public description;
address public owner;
address public creator;
string public location;
bool public locked;
modifier onlyCreator() {
if(msg.sender != creator)
revert("Only creator can change it");
_;
}
modifier onlyOwner() {
if(msg.sender != owner)
revert("Only owner can transfer ownership");
_;
}
modifier unlockedState() {
require(locked == false, "Operacion no permitida");
_;
}
constructor(string _description, string _location, address _owner) public {
locked = true;
creator = msg.sender;
owner = _owner;
description = _description;
location = _location;
}
function setOwner(address newOwner) onlyCreator public {
require(owner == 0x0000000000000000000000000000000000000000, 'owner is not null');
owner = newOwner;
}
function transferOwnership(address newOwner) onlyOwner public {
owner = newOwner;
}
function changeLock() onlyOwner public {
locked = !locked;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment