mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-18 18:02:24 +00:00
Merge pull request #27 from ShyftNetwork/token-test
add test cases for tokens
This commit is contained in:
commit
0747775068
5 changed files with 70 additions and 0 deletions
9
simulations/token_test/README.md
Normal file
9
simulations/token_test/README.md
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
`npm install`
|
||||
run `node deploy.js` to deploy the contract.
|
||||
|
||||
this will log out a contract in the geth logs.
|
||||
|
||||
set the ADDR environment variable to this contract address.
|
||||
ie `export ADDR=<contract_addr>`
|
||||
|
||||
then run `node calltx.js`
|
||||
9
simulations/token_test/calltx.js
Normal file
9
simulations/token_test/calltx.js
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
var Web3 = require('web3')
|
||||
var web3 = new Web3(new Web3.providers.HttpProvider("http://127.0.0.1:8545"));
|
||||
var contract_address = process.env.ADDR
|
||||
|
||||
var mytokenContract = web3.eth.contract([{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"initialSupply","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}]).at(contract_address)
|
||||
|
||||
console.log(mytokenContract.balanceOf('0x43EC6d0942f7fAeF069F7F63D0384a27f529B062'))
|
||||
|
||||
mytokenContract.transfer.sendTransaction('0x9e602164C5826ebb5A6B68E4AFD9Cd466043dc4A', 3, {from: '0x43EC6d0942f7fAeF069F7F63D0384a27f529B062', gas: 3000000})
|
||||
17
simulations/token_test/deploy.js
Normal file
17
simulations/token_test/deploy.js
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
var Web3 = require('web3')
|
||||
var web3 = new Web3(new Web3.providers.HttpProvider("http://127.0.0.1:8545"));
|
||||
|
||||
var initialSupply = 50000
|
||||
var mytokenContract = web3.eth.contract([{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"initialSupply","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}]);
|
||||
var mytoken = mytokenContract.new(
|
||||
initialSupply,
|
||||
{
|
||||
from: web3.eth.accounts[0],
|
||||
data: '0x608060405234801561001057600080fd5b5060405160208061033583398101806040528101908080519060200190929190505050806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550506102af806100866000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806370a0823114610051578063a9059cbb146100a8575b600080fd5b34801561005d57600080fd5b50610092600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506100f5565b6040518082815260200191505060405180910390f35b3480156100b457600080fd5b506100f3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061010d565b005b60006020528060005260406000206000915090505481565b806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561015a57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401101515156101e757600080fd5b806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555050505600a165627a7a72305820c12ed9899b0830fb3b1c8938b12a5e3ee651fb5e6febea7863ea990d72ab04420029',
|
||||
gas: '4700000'
|
||||
}, function (e, contract){
|
||||
console.log(e, contract);
|
||||
if (typeof contract.address !== 'undefined') {
|
||||
console.log('Contract mined! address: ' + contract.address + ' transactionHash: ' + contract.transactionHash);
|
||||
}
|
||||
})
|
||||
14
simulations/token_test/package.json
Normal file
14
simulations/token_test/package.json
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"name": "token_contract",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"web3": "^0.20.5"
|
||||
}
|
||||
}
|
||||
21
simulations/token_test/token.sol
Normal file
21
simulations/token_test/token.sol
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
pragma solidity ^0.4.20;
|
||||
|
||||
contract MyToken {
|
||||
/* This creates an array with all balances */
|
||||
mapping (address => uint256) public balanceOf;
|
||||
|
||||
/* Initializes contract with initial supply tokens to the creator of the contract */
|
||||
function MyToken(
|
||||
uint256 initialSupply
|
||||
) public {
|
||||
balanceOf[msg.sender] = initialSupply; // Give the creator all initial tokens
|
||||
}
|
||||
|
||||
/* Send coins */
|
||||
function transfer(address _to, uint256 _value) public {
|
||||
require(balanceOf[msg.sender] >= _value); // Check if the sender has enough
|
||||
require(balanceOf[_to] + _value >= balanceOf[_to]); // Check for overflows
|
||||
balanceOf[msg.sender] -= _value; // Subtract from the sender
|
||||
balanceOf[_to] += _value; // Add the same to the recipient
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue