POA
中文
中文
  • 欢迎来到POA
  • 特性
    • 已知验证人
    • POADAO共识
    • 桥接原生令牌
  • 用例
    • 区块链游戏的可扩展性
    • 基于社区的货币
    • 补贴交易
    • 去中心化金融(DeFi)
  • 路线图
  • 面向用户
    • POA令牌
      • POA & POA20交易所
      • 常见问题解答:POA20一般问题
    • POA令牌用例
      • 实用令牌
      • 货币代币
      • 抵押代币
      • 桥接令牌
      • 质押令牌
      • 稳定令牌
    • POA到POA20桥
    • 接受POA20付款
      • 帐户注册和登录(商家设置)
      • 设置商家帐户
      • 商户付款方式设置
      • 使用POA20付款(客户角度)
    • 教程
      • 在DEX.AG上交易POA20
      • 在1inch.exchange上交换POA20令牌
      • 通过Discord获取空投
    • 治理
      • 文章:链上治理成功的一年
      • 治理季度报告
        • 2019年11月度报告
    • 钱包
      • Nifty钱包
        • 入门
      • Trust钱包
    • 白皮书
      • POADAO v1
        • 介绍
        • 权威证明 - Proof of Authority
        • POA网络功能
        • 去中心化应用程序(DApps)
          • 初始仪式DApp
          • 物理地址证明(PoPA)DApp
          • 银行帐户DApp证明
          • 社交网络证明DApp
          • 电话号码证明DApp
          • 治理DApp
        • 总结和致谢
        • 参考文献
        • 附录A:代码示例
          • 投票管理员
          • 验证人管理员
          • 为挖矿节点的部署脚本
  • 面向开发者
    • 开发人员资源
    • POA安装
    • Sokol测试网络水龙头
    • ERC20测试令牌水龙头
    • DApp部署
    • 基于POA的赠款
  • 对于验证者
    • 入门
      • 验证人资源
    • 引导节点设置
      • AWS引导节点设置
        • 先决条件
        • 配置AWS
        • 下载并配置脚本
        • 部署
      • 非AWS引导节点设置和部署
        • 本地/远程计算机系统要求
        • 节点准备
        • 使用部署手册配置节点
    • 验证者节点设置
      • 适用于验证程序节点部署的AWS VM
        • MoC:仪式密钥交换和生成大师
        • 当前的验证人为新的验证人投票
        • 验证程序节点设置先决条件
        • 配置AWS
        • 下载并配置脚本
        • 部署方式
        • 升级实例到更大的类型
      • 非AWS验证程序节点设置
        • 本地和远程机器系统要求
        • 远程机器设置
        • 使用部署手册配置节点
    • 硬分叉
      • Parity升级指南
      • POA Core主网
        • 即将到来的 HF 2019-12-12 | #12478880
        • 2019-04-29 | #8582254
        • 2018-01-29 | # 772000
        • 2018-10-22 | #5329160
    • 验证程序Dapps
      • 验证人元数据DApp
  • 媒体
    • 大事记
    • 研发合作伙伴
    • 社交媒体
    • 媒体工具包
    • 联系我们
Powered by GitBook
On this page

Was this helpful?

  1. 面向用户
  2. 白皮书
  3. POADAO v1
  4. 附录A:代码示例

验证人管理员

pragma solidity ^0.4.14;

import "oracles-contract-validator/ValidatorClass.sol";
import "./KeysManager.sol";

contract ValidatorsManager is ValidatorClass, KeysManager {

    /**
    @notice Adds new notary
    @param miningKey Notary's mining key
    @param zip Notary's zip code
    @param licenseID Notary's license ID
    @param licenseExpiredAt Notary's expiration date
    @param fullName Notary's full name
    @param streetName Notary's address
    @param state Notary's US state full name
    */
    function addValidator(
        address miningKey,
        uint zip,
        uint licenseID,
        uint licenseExpiredAt,
        string fullName,
        string streetName,
        string state
    ) {
        assert(!(!checkVotingKeyValidity(msg.sender) && !checkInitialKey(msg.sender)));
        assert(licensesIssued < licensesLimit);
        validator[miningKey] = Validator({
            fullName: fullName, 
            streetName: streetName, 
            state: state, 
            zip: zip, 
            licenseID: licenseID, 
            licenseExpiredAt: licenseExpiredAt, 
            disablingDate: 0, 
            disablingTX: ""
        });
    }

    /**
    @notice Gets active notaries mining keys
    @return { "value" : "Array of active notaries mining keys" }
    */
    function getValidators() constant returns (address[] value) {
        return validators;
    }

    /**
    @notice Gets disabled notaries mining keys
    @return { "value" : "Array of disabled notaries mining keys" }
    */
    function getDisabledValidators() constant returns (address[] value) {
        return disabledValidators;
    }

    /**
    @notice Gets notary's full name
    @param addr Notary's mining key
    @return { "value" : "Notary's full name" }
    */
    function getValidatorFullName(address addr) constant returns (string value) {
        return validator[addr].fullName;
    }

    /**
    @notice Gets notary's address
    @param addr Notary's mining key
    @return { "value" : "Notary's address" }
    */
    function getValidatorStreetName(address addr) constant returns (string value) {
        return validator[addr].streetName;
    }

    /**
    @notice Gets notary's state full name
    @param addr Notary's mining key
    @return { "value" : "Notary's state full name" }
    */
    function getValidatorState(address addr) constant returns (string value) {
        return validator[addr].state;
    }

    /**
    @notice Gets notary's zip code
    @param addr Notary's mining key
    @return { "value" : "Notary's zip code" }
    */
    function getValidatorZip(address addr) constant returns (uint value) {
        return validator[addr].zip;
    }

    /**
    @notice Gets notary's license ID
    @param addr Notary's mining key
    @return { "value" : "Notary's license ID" }
    */
    function getValidatorLicenseID(address addr) constant returns (uint value) {
        return validator[addr].licenseID;
    }

    /**
    @notice Gets notary's license expiration date
    @param addr Notary's mining key
    @return { "value" : "Notary's license expiration date" }
    */
    function getValidatorLicenseExpiredAt(address addr) constant returns (uint value) {
        return validator[addr].licenseExpiredAt;
    }

    /**
    @notice Gets notary's disabling date
    @param addr Notary's mining key
    @return { "value" : "Notary's disabling date" }
    */
    function getValidatorDisablingDate(address addr) constant returns (uint value) {
        return validator[addr].disablingDate;
    }
}
Previous投票管理员Next为挖矿节点的部署脚本

Last updated 5 years ago

Was this helpful?