天天看點

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