mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-19 02:12:23 +00:00
add test cases for tokens
This commit is contained in:
parent
076b975878
commit
020d720bea
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