<?php
// 基于区块链技术的去中心化投票系统
// 引入必要的库和类
require_once 'vendor/autoload.php';
use Web3\Web3;
use Web3\Utils;
use Web3\Contract;
use Web3\Providers\HttpProvider;
// 连接到以太坊节点
$web3 = new Web3(new HttpProvider(new \GuzzleHttp\Client(['base_uri' => 'http://localhost:8545'])));
// 加载智能合约 ABI
$abi = json_decode(file_get_contents('contract_abi.json'), true);
// 实例化智能合约
$contract = new Contract($web3->provider, $abi);
// 获取当前用户的钱包地址
$userAddress = '0x1234567890123456789012345678901234567890';
// 获取当前投票合约地址
$contractAddress = '0x0123456789abcdef0123456789abcdef01234567';
// 获取用户已投票的选项
$votedOption = $contract->call('getVotedOption', [], $userAddress);
// 获取投票选项列表
$options = $contract->call('getOptions');
// 显示投票界面
echo "<h1>基于区块链技术的去中心化投票系统</h1>";
echo "<h2>投票选项:</h2>";
echo "<form method='post' action='submit_vote.php'>";
foreach ($options as $option) {
$optionId = Utils::toHex($option);
echo "<input type='radio' name='vote_option' value='{$optionId}'";
if ($votedOption === $optionId) {
echo " checked disabled";
}
echo "> {$option}<br>";
}
echo "<input type='submit' value='投票'></form>";
// 显示已投票选项
if (!empty($votedOption)) {
echo "<h3>您已投票给:{$votedOption}</h3>";
}
?>