EOS 骰子游戏机器人 dice robot
最近EOS上bc类游戏似乎十分火热,下注即挖矿,引得大批矿工用机器人前往下注刷代币,最进闲来无事也写了几个脚本去凑凑热闹
github
机器人用到了EOS的命令行工具cleos和keosd
基本思路就是用cleos不断向合约地址发起交易,用python不断执行这些命令,非常简单
下面是betdice平台机器人部分代码:
import subprocess
import time
import random
import threading
CLEOS = 'cleos --wallet-url http://127.0.0.1:8900 -u http://mainnet.genereos.io '
def getseed():
charmap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890'
seed = ''
for i in range(18):
idx = random.randint(0, len(charmap) - 1)
seed += charmap[idx]
return seed
def create_memo(referal, rollUnder):
memo = 'action:bet,seed:' + getseed() + ',rollUnder:' + str(rollUnder) + ',ref:' + referal
return memo
def run(cmd):
return subprocess.call(cmd, shell = True)
def run2(cmd):
p = subprocess.Popen(cmd, shell = True, stdout = subprocess.PIPE)
ret = p.stdout.read()
return ret
def onebet(account, amount, memo):
cmd = CLEOS + 'transfer ' + account + ' ' + betdice_account + ' ' +\
"'" + str(amount) + " EOS' " + "'" + memo + "'"
# print(cmd)
# print("? ", account, amount)
run(cmd)
def unlock_wallet(wallet_name, wellet_password):
cmd = CLEOS + 'wallet unlock -n ' + wallet_name + ' --password ' + wallet_password
run(cmd)
def get_balance(account):
cmd = CLEOS + 'get currency balance eosio.token ' + account +\
" | awk '{print $1}'"
ret = float(run2(cmd))
return ret
def get_cpu(account):
cmd = CLEOS + "get account " + account + " | grep available | awk 'NR==2 {print $2}'"
# print(cmd)
cpu_available = float(run2(cmd))
return cpu_available
def get_ram(account):
cmd = CLEOS + "get account " + account + " | grep available | awk 'NR==1 {print $2}'"
ram_available = float(run2(cmd))
return ram_available
def bet(account, amount, rollUnder, referal, betdice_account):
while True:
cpu = get_cpu(account)
if cpu == 0:
print('No cpu available, waiting...')
continue
memo = create_memo(referal, rollUnder)
onebet(account, amount, memo)
print(account, amount, rollUnder)
time.sleep(1)
完整代码见github,其中还包括了funcity等平台的一些脚本