如何无误地生成Blockcypher合约?

问题描述

在这里建立自己的合同: https://www.blockcypher.com/dev/ethereum/#create-contract-endpoint

引擎.PHP

<?PHP
function blockcypher($method,$page,$data = ""){
    $curl = curl_init();
    curl_setopt($curl,CURLOPT_URL,"https://api.blockcypher.com/v1/".$page);
    curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);

    if($data != ''){
        curl_setopt($curl,CURLOPT_POSTFIELDS,$data);
    }
    curl_setopt($curl,CURLOPT_CUSTomrEQUEST,$method);

    curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,false);
    curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false);

    $headers = array();
    $headers[] = 'Content-Type: application/x-www-form-urlencoded';
    curl_setopt($curl,CURLOPT_HTTPHEADER,$headers);
    
    $result = curl_exec($curl);
    if (curl_errno($curl)) {
        echo 'Error:' . curl_error($curl);
    }
    curl_close ($curl);
    return $result;
}
?>

进程.PHP

<?PHP
session_start();
error_reporting(1);
include 'ENGINE.PHP';

$token = '?token=YOURFREetoKEN';
$server = "eth/main";

$data = "{\"solidity\":\"contract mortal { address owner; function mortal() { owner = msg.sender; } function kill() { if (msg.sender == owner) suicide(owner); } } contract greeter is mortal { string greeting; function greeter(string _greeting) public { greeting = _greeting; } function greet() constant returns (string) { return greeting; } }\",\"params\":[\"Hello BlockCypher Test\"]}";
$contract_details = blockcypher("POST","$server/contracts$token",$data);
echo "<br><br>USDT Generate Contract: ";
var_dump($contract_details);

PROCESS.PHP输出

USDT Generate Contract: string(101) "{"error": "Error compiling solidity source code: fork/exec /usr/bin/solc: no such file or directory"}"

我收到此错误,但不知道问题出在哪里,因为对此类事情的了解很少。

代码示例: https://paiza.io/projects/XNbO9tM4UwxL-NPaxY1Wcw?language=php

解决方法

编译 Solidity 源代码时出错:fork/exec /usr/bin/solc: no such file or directory

这是 Blockcypher 方面的错误。您可能想向他们报告。

include_tasks 是一个“solidity 编译器”以及它的作用 - 它需要文本源代码和配置(例如您使用的 Solidity 版本,是否要运行优化器,... ) 作为输入,并返回字节码、ABI 和元数据作为输出。

因此,当您调用 Blockchypher 端点时,他们的系统会尝试打开二进制文件 solc。但是文件在他们的系统上放错了位置,端点返回了这个错误。