热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

功能高的气体要求:无限

如何解决《功能高的气体要求:无限》经验,为你挑选了1个好方法。

以下是我的智能合约.当我把它放入混音时,我会收到以下每个功能的警告.

函数GasRecord.addNote(bytes32,bytes32)的气体要求高:无限.

函数GasRecord.getDoctorsNames()的气体要求高:无限.

函数GasRecord.getNotes()的气体要求高:无限.

函数GasRecord.giveDoctorAccess(address,bytes32)的气体要求高:无限.

pragma solidity ^0.4.17;


contract MedicalRecord {
struct Doctor {
    bytes32 name;
    uint id;
}

struct Note {
    bytes32 title;
    bytes32 note;
}

address public patient;
uint private doctorId;
bytes32[] public doctorsNames;
Note[] notes;
mapping (address => Doctor) private doctors;

modifier onlypatient {
    require(msg.sender == patient);
    _;
}

modifier isCurrentDoctor {
    require(!(doctors[msg.sender].id 

谁能告诉我如何改进这个?



1> Adam Kipnis..:

对动态阵列的任何引用都将导致无限的气体警告.这并不一定意味着你做错了什么.

从优化尺寸来看,您可以做几件小事,但大多数都不会大幅改变您的燃气消耗量.例如,我认为不需要存储单独的数组,doctorNames因为您已经在Doctor结构中保存了这些数组.另外,一般来说,在你做的时候迭代一个可能无界的项目数组并不是一个好主意getNotes().通常,最好有一个返回数组长度的函数,然后调用一个单独的函数来获取在索引中传递的注释(换句话说,在客户端中执行循环).但即使在这里,你的用例似乎也不会产生大量的笔记.

您的最大成本将是您与单个患者签订的合同.合同部署非常昂贵.在这里,您将为您系统中的每位患者部署合同(可能是每位患者签订多份合同,因为这是一份病历?).我希望将所有内容都归结为结构,并为所有患者/医疗记录签订1份合同.根据整个商业案例,每个患者可能会签一份合同(即使考虑到这一点,我想我会先探讨每位医生签一份合同).但是,肯定不是每份医疗记录的合同.


推荐阅读
author-avatar
leedaning
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有