Alien Worlds는 WAX 생태계를 기반으로 한 웹 게임입니다. 기본적으로 수행하는 작업은 게임 내에서 채굴을 진행하고 TLM 토큰을 얻게 됩니다. 이번 글에서는 해당 채굴 작업을 자동으로 진행할 수 있도록 프로그램을 개발하는데 도움이 될 정보를 남기고자 합니다.
먼저, 다음 코드는 play.alienworlds.io/message_handler.js 코드의 일부분 입니다.
const wax = new waxjs.WaxJS('https://api.waxsweden.org');
async function server_login() {
try {
const userAccount = await wax.login();
unityInstance.SendMessage(
'Controller',
'Server_Response_LoginData',
userAccount
);
} catch(error) {
unityInstance.SendMessage(
'ErrorHandler',
'Server_Response_SetErrorData',
readError(error.message)
);
}
}
const getMineDelay = async function (account) {
try {
const bag = await getBag(mining_account, account, wax.api.rpc, api_endpoints);
const land = await getLand(
mining_account,
account,
wax.api.rpc,
api_endpoints
);
const params = getBagMiningParams(bag);
const land_params = getLandMiningParams(land);
params.delay *= land_params.delay / 10;
params.difficulty += land_params.difficulty;
var minedelay = await getNextMineDelay(
mining_account,
account,
params,
wax.api.rpc
);
return minedelay;
} catch (error) {
return error;
}
};
const background_mine = async (account) => {
return new Promise(async (resolve, reject) => {
const bagDifficulty = await getBagDifficulty(account);
const landDifficulty = await getLandDifficulty(account);
const difficulty = bagDifficulty + landDifficulty;
console.log('difficulty', difficulty);
console.log('start doWork = ' + Date.now());
const last_mine_tx = await lastMineTx(mining_account, account, wax.api.rpc);
doWorkWorker({ mining_account, account, difficulty, last_mine_tx }).then(
(mine_work) => {
console.log('end doWork = ' + Date.now());
resolve(mine_work);
}
);
});
};
async function server_claim2 (mining_account1, account, account_permission, mine_data1, hyperion_endpoints) {
console.log(mining_account1);
console.log(account);
console.log(account_permission);
console.log(mine_data1);
console.log(hyperion_endpoints);
try {
var mine_work = JSON.parse(mine_data1);
const mine_data = {
miner: mine_work.account,
nonce: mine_work.rand_str,
};
console.log("Claiming Now");
const claimData = await claim(mining_account,account, 'active', mine_data, hyperion_endpoints, wax.api);
console.log("Claim Data" + claimData);
unityInstance.SendMessage(
'Controller',
'Server_Response_Claim',
claimData.toString()
);
} catch (error) {
unityInstance.SendMessage(
'ErrorHandler',
'Server_Response_SetErrorData',
error.message
);
}
}
다음 함수들을 순서대로 수행하는 것으로 프로그래밍으로 채굴을 진행할 수 있습니다.
- login
- getMineDelay
- background_mine
- server_claim2 (이전 버전에서는 server_claim 이었지만, 해당 함수는 현재 작동하지 않음.)
제가 사용하는 코드를 남기지는 않겠습니다만, Pseudo-code로는 다음과 같이 표현할 수 있겠습니다.
let account = wax.login();
while (true) {
let mineDelay = 1;
do {
mineDelay = await getMineDelay(account);
await delay(mineDelay);
} while (mineDelay > 0);
let work = await background_mining(...);
await server_claim2(...);
}
궁금하신 사항은 쪽지 남겨주세요.
'코인 > 코인 개발' 카테고리의 다른 글
업비트(Upbit) API를 이용해 프로그램 개발 시 주의 사항 (1) | 2021.07.09 |
---|---|
코인 거래량 급등 텔레그램(Telegram) 알림 봇 파이썬(Python)으로 만들기 (7) | 2021.07.08 |
업비트 API를 이용한 코인 거래량 급등 알리미 프로그램 (7) | 2021.07.07 |
업비트 (Upbit) Open API 키 발급 받기 (0) | 2021.07.07 |
암호화폐 프로젝트 개발 프로그래밍 언어 사용 순위 (0) | 2021.07.03 |