Ethereum Cryptocurrency-智能联系人最后一行上的解析器错误?

Ethereum Cryptocurrency-智能联系人最后一行上的解析器错误?,ethereum,solidity,cryptocurrency,Ethereum,Solidity,Cryptocurrency,在过去的几个小时里,我一直在为一种加密货币编写一份智能合约,并准备编译它。但在编译时,Solidity出现了一个错误:“ParserError:应该是pragma、import指令或contract/interface/library定义。”它位于最后一行,我多次检查了整个代码,以确保没有错误。任何帮助都会很好。代码如下: pragma-solidity^0.4.21; //文件:zepplin solidity/contracts/owner/Ownable.sol 合同所有权{ 向公众所有人

在过去的几个小时里,我一直在为一种加密货币编写一份智能合约,并准备编译它。但在编译时,Solidity出现了一个错误:“ParserError:应该是pragma、import指令或contract/interface/library定义。”它位于最后一行,我多次检查了整个代码,以确保没有错误。任何帮助都会很好。代码如下:

pragma-solidity^0.4.21;
//文件:zepplin solidity/contracts/owner/Ownable.sol
合同所有权{
向公众所有人致辞;
事件所有者已转移(地址索引为previousOwner,
地址(新所有者);
//@dev可拥有构造函数将合同的原始“所有者”设置为发件人
//帐户。
函数Ownable()public{
所有者=msg.sender;
}
//如果业主以外的任何其他账户
仅修饰符所有者(){
请求(msg.sender==所有者);
_;
}
//在发生事件时转让所有权
功能转移所有权(地址newOwner)仅限公共所有者
{
require(newOwner!=地址(0));
所有权转让(所有者、新所有者);
所有者=新所有者;
}
}
//安全数学协议
图书馆安全数学{
函数mul(uint256 a,uint256 b)内部纯返回
(uint256){
如果(a==0){
返回0;
}
uint256 c=a*b;
断言(c/a==b);
返回c;
}
函数div(uint256 a,uint256 b)内部纯返回
(uint256){
//assrt(b>0);//当固体除以0时自动抛出
uint256 c=a/b;
//assert(a==b*c+a%b);//在任何情况下都是这样
返回c;
}
函数子(UNIT256A,UINT256B)内部纯返回
(uint256){
断言(b=a);
返回c;
}
}
//智能合同标题(ERC20)
合同ERC20{
uint256公共总供给;
(地址)公众视图返回的功能平衡(uint256);
函数传输(地址到,uint256值)公共返回(bool);
功能允许(地址所有者、地址使用者)公共视图返回(uint256);
函数transferFrom(addres from,address to,uint256值)公共返回(bool);
功能批准(地址支出者,uint256值)公共退货(bool);
事件传输(地址索引自,地址索引至,uint256值);
事件批准(地址索引所有者、地址索引支出者、uint256值);
}
合同赫本那是ERC20,可拥有{
对uint256使用SafeMath;
//铸造和销毁代币的控制者
地址公共hepburnDevmoon=
0x471E918a75A99038856eF9754368Eb1b5D15f9D5;
//批准铸造和提取代币的控制员
地址公共广播电台=
0x0554c3CF2315FB98181d1FEBfaf083cDf68Fa145;
结构令牌交换锁{
uint256值;
uint256区块编号;
}
//余额(与ERC20Basic Replicator共享)
映射(地址=>uint256)余额;
//当令牌号小于传入块时
映射(地址=>TokenswithLock)锁令牌;
允许映射(地址=>mapping(地址=>uint256));
//代币帽
uint256公共总供给AP=1e11;
//令牌信息
字符串public name=“赫本A”;
字符串public symbol=“AUYHA”;
uint8公共小数=18;
bool public mintingFinished=false;
//部署时的块编号
uint256 public deployBlockNumber=getCurrentBlockNumber();
//锁定时间的最小阈值
uint256公共恒定时间阈值=9720;
//可以调用MintTokenswithTime的时间
uint256公共常数时间=291600;
//铸造代币的锁定时间
uint256 LOCK的公共持续时间=9720;
//如果允许传输,则为True
bool-public=false;
//如果可转让文件可以更改,则为True
bool public canSetTransferable=true;
修饰符canMint(){
要求(!mintingFinished);
_;
}
仅限修饰符(地址_地址){
需要(msg.sender==\u地址);
_;
}
修饰符非零地址(地址_地址){
需要(_地址!=地址(0));
_;
}
修饰语canTransfer(){
要求(可转让==真实);
}
事件设置锁定的持续时间(地址索引的调用方);
事件批准令牌(地址索引的所有者,uint256金额);
事件令牌(地址索引的所有者,uint256金额);
事件标记(地址索引的所有者,uint256金额);
事件BurnTokens(地址索引的所有者,uint256金额);
事件完成(地址索引的调用方);
事件集可转移(地址索引地址,布尔可转移);
事件集hepburndevmoon(地址索引为旧,地址索引为新);
event DisableSetTransferable(地址索引的地址,bool\u canSetTransferable);
函数传输(地址为,uint256值)可以传输公共返回(bool){
要求(_to!=地址(0));

require({u value在代码末尾有两个额外的右花括号(
}
),我想这就是你出错的原因。

在代码末尾有两个额外的右花括号(
}
),我想这就是你出错的原因。

一些观察:

  • 末端有两个额外的右花括号
  • 在modifier onlyOwner()中,它们是打字错误(requirer->require)
  • 功能子模块(单元256 a)输入错误(单元256->uint256)
  • 地址输入->事件禁用设置可转移(地址索引\u地址, 布尔(可转让),
  • 函数transferFrom(addres from)输入错误,(addres->address)
  • 修饰符canTransfer()应包含“;”
  • 函数设置->尝试更改此函数的名称,因为它是
    与事件名称相同