gasoptimization 변수 시퀀스 조직. 견고성 스마트 계약에서 상태 변수를 정의하는 순서는 해당 변수를 사용하는 함수를 호출하는 동안뿐만 아니라 계약을 배포하는 동안 지출하는 가스 요금에 영향을 미칩니다. Solidity는 상태 변수를 256비트 슬롯에 저장하고 2개(또는 그 이상)의 연속 변수 크기를 더하면 256 이하가 되면 이러한 변수는 동일한 슬롯에 저장됩니다. (바이트와 같은 유형은 최대 2개의 슬롯을 획득할 수 있음) ... soliditygasoptimizationbestpractice 올바른 데이터 위치를 사용합니다. 계약을 생성하는 동안 올바른 데이터 위치를 사용하면 트랜잭션에서 가스를 절약할 수 있습니다. 견고한 데이터 위치: 저장소 - 변경을 도입하기 위해 상태 변수를 참조하는 동안 사용됨 메모리 - 변수가 메모리에 복사되고 이를 변경해도 블록체인의 상태가 변경되지 않습니다.(데이터를 얻기 위한 참조 상태 변수뿐만 아니라 함수 입력에도 사용할 수 있음) Calldata - 메모리와 동일하지만 함수 입... soliditygasoptimizationbestpractice 함수에서 스토리지 액세스 방지 - 1 많은 경우 메모리(로컬 변수)에서 데이터에 액세스하는 것이 스토리지(상태 변수)에서 데이터에 액세스하는 것보다 저렴합니다. 그러나 항상 그런 것은 아니며 메모리에 복사할 때 몇 가지 추가 단계가 필요한 상황이 있을 수 있습니다. 이 사례는 다른 게시물에서 실험해 보겠습니다. 이제 일반적인 경우에 초점을 맞추겠습니다. 다음 계약을 고려하십시오. varReferencing_1과 varRefere... soliditygasoptimizationbestpractice 함수에서 스토리지 액세스 방지 - 2 이 게시물은 메모리에서 데이터를 참조하여 가스를 절약하는 마지막 게시물에서 계속됩니다. 이제 우리는 이것이 모순될 수 있는 경우를 보게 될 것입니다. 다음 계약을 고려하십시오. 세 계약 모두 새 요소를 배열에 푸시하고 새 배열 길이로 모든 요소의 인덱스를 합산하고 배열에서 업데이트하는 기능이 완전히 동일합니다. (참고: 이 기능은 실제로 사용되지 않으며 단지 예일 뿐입니다.) 차이점과 각 계... soliditygasoptimizationbestpractice 단락 모든 코딩 언어에서 Short-circuiting을 사용하는 기본 의도는 비교 작업 중에 수행되는 계산 수를 줄이는 것입니다. 견고성에서 계산 감소는 가스 감소를 의미합니다. 다음 계약을 고려하십시오. 두 계약 모두 동일한 조건을 따르며 함수에 대한 입력은 짝수이고 0보다 커야 합니다. 조건이 참이면 상태 변수flag가 참으로 설정됩니다. 그리고 이전 함수 호출flag이 true이고 다음 호... soliditygasoptimizationbestpractice 루프 증분 이것은 우리 중 많은 사람들이 가스 효율을 알지 못한 채 사용할 수 있는 매우 간단한 기술입니다. 다음 계약을 고려하십시오. 두 계약 모두 배열을 반복하여 모든 요소를 합산하는 기능something이 있습니다. 그러나 루프의 증가 스타일에 차이가 있습니다. Inc1에는 i +=1가 있고 Inc2에는 i++가 있습니다.... soliditygasoptimizationbestpractice 변수 시퀀스 - 2 우리는 이전에 단일 슬롯에 여러 변수를 맞추면 실행 시 가스가 절약되는 것을 보았습니다. 그러나 이 경우에는 예외가 있습니다. 이전 관찰을 기억해 봅시다. 다음 계약을 고려하십시오. updateVar 함수 실행에 더 많은 가스 비용이 드는 계약은 무엇입니까? 추측했다면 varSequence2_1 맞습니다. 이것은 우리가 에서 본 것과 비슷합니다. 이제 다음 계약을 고려하십시오. 현재 어떤 계... gasoptimizationsoliditybestpractice
변수 시퀀스 조직. 견고성 스마트 계약에서 상태 변수를 정의하는 순서는 해당 변수를 사용하는 함수를 호출하는 동안뿐만 아니라 계약을 배포하는 동안 지출하는 가스 요금에 영향을 미칩니다. Solidity는 상태 변수를 256비트 슬롯에 저장하고 2개(또는 그 이상)의 연속 변수 크기를 더하면 256 이하가 되면 이러한 변수는 동일한 슬롯에 저장됩니다. (바이트와 같은 유형은 최대 2개의 슬롯을 획득할 수 있음) ... soliditygasoptimizationbestpractice 올바른 데이터 위치를 사용합니다. 계약을 생성하는 동안 올바른 데이터 위치를 사용하면 트랜잭션에서 가스를 절약할 수 있습니다. 견고한 데이터 위치: 저장소 - 변경을 도입하기 위해 상태 변수를 참조하는 동안 사용됨 메모리 - 변수가 메모리에 복사되고 이를 변경해도 블록체인의 상태가 변경되지 않습니다.(데이터를 얻기 위한 참조 상태 변수뿐만 아니라 함수 입력에도 사용할 수 있음) Calldata - 메모리와 동일하지만 함수 입... soliditygasoptimizationbestpractice 함수에서 스토리지 액세스 방지 - 1 많은 경우 메모리(로컬 변수)에서 데이터에 액세스하는 것이 스토리지(상태 변수)에서 데이터에 액세스하는 것보다 저렴합니다. 그러나 항상 그런 것은 아니며 메모리에 복사할 때 몇 가지 추가 단계가 필요한 상황이 있을 수 있습니다. 이 사례는 다른 게시물에서 실험해 보겠습니다. 이제 일반적인 경우에 초점을 맞추겠습니다. 다음 계약을 고려하십시오. varReferencing_1과 varRefere... soliditygasoptimizationbestpractice 함수에서 스토리지 액세스 방지 - 2 이 게시물은 메모리에서 데이터를 참조하여 가스를 절약하는 마지막 게시물에서 계속됩니다. 이제 우리는 이것이 모순될 수 있는 경우를 보게 될 것입니다. 다음 계약을 고려하십시오. 세 계약 모두 새 요소를 배열에 푸시하고 새 배열 길이로 모든 요소의 인덱스를 합산하고 배열에서 업데이트하는 기능이 완전히 동일합니다. (참고: 이 기능은 실제로 사용되지 않으며 단지 예일 뿐입니다.) 차이점과 각 계... soliditygasoptimizationbestpractice 단락 모든 코딩 언어에서 Short-circuiting을 사용하는 기본 의도는 비교 작업 중에 수행되는 계산 수를 줄이는 것입니다. 견고성에서 계산 감소는 가스 감소를 의미합니다. 다음 계약을 고려하십시오. 두 계약 모두 동일한 조건을 따르며 함수에 대한 입력은 짝수이고 0보다 커야 합니다. 조건이 참이면 상태 변수flag가 참으로 설정됩니다. 그리고 이전 함수 호출flag이 true이고 다음 호... soliditygasoptimizationbestpractice 루프 증분 이것은 우리 중 많은 사람들이 가스 효율을 알지 못한 채 사용할 수 있는 매우 간단한 기술입니다. 다음 계약을 고려하십시오. 두 계약 모두 배열을 반복하여 모든 요소를 합산하는 기능something이 있습니다. 그러나 루프의 증가 스타일에 차이가 있습니다. Inc1에는 i +=1가 있고 Inc2에는 i++가 있습니다.... soliditygasoptimizationbestpractice 변수 시퀀스 - 2 우리는 이전에 단일 슬롯에 여러 변수를 맞추면 실행 시 가스가 절약되는 것을 보았습니다. 그러나 이 경우에는 예외가 있습니다. 이전 관찰을 기억해 봅시다. 다음 계약을 고려하십시오. updateVar 함수 실행에 더 많은 가스 비용이 드는 계약은 무엇입니까? 추측했다면 varSequence2_1 맞습니다. 이것은 우리가 에서 본 것과 비슷합니다. 이제 다음 계약을 고려하십시오. 현재 어떤 계... gasoptimizationsoliditybestpractice