天天看点

EOS 骰子游戏机器人EOS 骰子游戏机器人 dice robot

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等平台的一些脚本