struct buyer{
uint amount;
Status status;
}
mapping(address=>buyer) public buyers;
mapping(uint=>address) buyerIndex;
uint public buyerNum;
//Order a product.
function(){
uint doubleValue=value*2;
uint amount=msg.value/doubleValue;
if(buyers[msg.sender]==null){ //Error in this line
buyer abuyer=buyer({amount:amount,status:Status.Created}); //Error in this line
buyerNum++;
buyerIndex[buyerNum]=msg.sender;
buyers[msg.sender]=abuyer;
}else{
buyers[msg.sender].amount+=amount;
}
Order(msg.sender,amount*doubleValue,amount);
}
Run Code Online (Sandbox Code Playgroud)
如果买方没有记录在买方映射中,那么buyerNum ++; 但我不知道如何判断买家是否在映射中
我对以太坊和 Solidity 开发非常陌生。
我只想声明一个简单的数组(动态列表),一个 set 函数将字符串推入其中,一个函数返回保存在动态数组中的所有字符串。
我搜索了很多,但找不到这个简单的东西。
提前致谢
我正在尝试使用至少2个验证器和一些事务处理器来配置锯齿网络.我正在使用Ubuntu 18.04,所以只有可能的解决方案是使用docker.
我整天搜索了一个有效的例子但仍然没有运气.还有就是官方网站上的例子在这里,但没有工作.docker镜像版本是1.1这很奇怪,因为docker hub上没有这样的版本.此外,它需要一个在任何地方都不存在的图像(hyperledger/sawtooth-poet-engine).
我知道主验证器应该生成密钥和创世块,而其他验证器[s]应该使用该工件.但是第二个验证器的正确配置是什么?它如何从第一个验证器读取生成的工件?
谢谢!
这是第一个验证器的配置:
validator-0:
image: hyperledger/sawtooth-validator:1.0
container_name: sawtooth-validator-default-0
expose:
- 4004
ports:
- "4004:4004"
entrypoint: "bash -c \"\
sawadm keygen && \
sawtooth keygen my_key && \
sawset genesis -k /root/.sawtooth/keys/my_key.priv && \
sawadm genesis config-genesis.batch && \
sawtooth-validator -vv \
--endpoint tcp://validator:8800 \
--bind component:tcp://eth0:4004 \
--bind network:tcp://eth0:8800 \
\""
Run Code Online (Sandbox Code Playgroud)