![Cover image for Announcing OPCraft: an Autonomous World built on the OP Stack-OP LABS BLOG [KOR]](https://img.paragraph.com/cdn-cgi/image/format=auto,width=3840,quality=85/https://storage.googleapis.com/papyrus_images/8dbf7fba6a3ff8d5451be5f6c2247468b5345e954ccf943532145bc133681890.png)
Announcing OPCraft: an Autonomous World built on the OP Stack-OP LABS BLOG [KOR]
비밀스러운 작은 세계…지난 몇 달 동안 Lattice는 Optimism 팀과 흥미로운 기술 협력을 진행했습니다. Twitter에서 이를 엿볼 수 있습니다. 자율 세계를 언급하는 이모티콘 벽이 있는 트윗이나 고르지 않은 풍경의 전경에 있는 재미있어 보이는 구조의 스크린샷입니다. 또는 흥미로운 새 온체인 게임에 대한 이야기를 Devcon에 있었던 친구들로부터 우연히 들었을 수도 있습니다. 오늘 우리는 OP Stack (Optimism의 모듈식 롤업 아키텍처) 위에 MUD (오픈 소스 온체인 게임 엔진) 로 구축된 완전한 온체인 3D 복셀 세계인 OPCraft를 공식적으로 공개합니다 .그렇다면 OPCraft는 무엇입니까?OPCraft는 Autonomous World입니다. 세계의 모든 단일 측면(모든 강, 풀잎, 산맥 꼭대기에 있는 눈 조각)이 온체인에 존재하는 완전한 온체인 가상 공간과 세계의 모든 단일 작업입니다. Ethereum 트랜잭션으로 발생합니다. 다른 제작 기반 복셀 세...
![Cover image for A Summer of Optimism [KOR]](https://img.paragraph.com/cdn-cgi/image/format=auto,width=3840,quality=85/https://storage.googleapis.com/papyrus_images/b9dab26b6790e5cf020436e92255802b3f2fb2d8ae29de5adc0ce7948bc90d1d.jpg)
A Summer of Optimism [KOR]
이후 기대감이 고조되고 있습니다 . 발표된 지난 주 Optimism Collective가 OP 여름이 될 것입니다. 앞으로 몇 주 동안 우리는 Optimism Collective의 지속 가능한 미래를 어떻게 확장할 계획인지에 대한 자세한 내용을 게시할 예정입니다. 오늘부터 OP Stimpack을 시작으로 합니다. Token House의 첫 번째 공식 조치인 이를 통해 거버넌스 펀드(231,928,234 OP)가 활성화되어 OP 메인넷의 성장에 대한 인센티브가 시작됩니다. 통해 규모에 맞는 지속 가능한 거버넌스를 위한 당사의 장기 비전에 대해 읽어보실 수 있습니다 소급 공공재 자금 지원을 에서 OP 경제학 개요 . 단기적으로는 토큰 공급량(231,928,234 OP)의 5.4%가 거버넌스 펀드를 통해 기존 및 신규 OP 메인넷 프로젝트에 분배될 예정입니다. 우리는 이 새로운 디지털 개척지의 기반을 구축하고 있지만 이를 현실로 가져오는 사람은 프로젝트와 사용자인 여러분입니다 .0에...
Dope Hires & Moar Mainnet in March [KOR]
이것은 우리가 팀에 만든 놀라운 추가 사항을 발표하기 위해 오랫동안 기한이 지난 게시물입니다. 우리는 11월에 Paradigm의 낙관적인 공급을 풍부하게 재확보한 a16z가 주도한 펀딩 라운드를 마감했습니다 . 이 현금을 통해 우리는 공간에서 가장 명석한 마음과 날카로운 운영자와 함께 빠르게 확장할 수 있었습니다. 이런 인재를 채용할 수 있게 되어서 3월에 퍼블릭 테스트넷이 아닌 메인넷에 임의 계약 배포를 시작 합니다!! 자세한 내용은 곧 제공됩니다. 우리는 지금 채용 중 입니다 . 아래 사람들과 같은 사람이라면 채용하고 싶습니다 .마크 타인웨이(영어)Mark는 Bitcoin에 대해 배우고 그것에 대해 더 배우기 위해 모든 것을 포기해야 할 때까지 신경 과학자로서 학문적 경력을 추구했습니다. 그는 bcoin이라는 비트코인의 대체 구현에 기여했으며 Handshake 출시를 도왔고 Optimism에 합류하여 Ethereum 확장 작업을 수행했습니다. “ 블록체인은 조정 문제를 ...
![Cover image for Announcing OPCraft: an Autonomous World built on the OP Stack-OP LABS BLOG [KOR]](https://img.paragraph.com/cdn-cgi/image/format=auto,width=3840,quality=85/https://storage.googleapis.com/papyrus_images/8dbf7fba6a3ff8d5451be5f6c2247468b5345e954ccf943532145bc133681890.png)
Announcing OPCraft: an Autonomous World built on the OP Stack-OP LABS BLOG [KOR]
비밀스러운 작은 세계…지난 몇 달 동안 Lattice는 Optimism 팀과 흥미로운 기술 협력을 진행했습니다. Twitter에서 이를 엿볼 수 있습니다. 자율 세계를 언급하는 이모티콘 벽이 있는 트윗이나 고르지 않은 풍경의 전경에 있는 재미있어 보이는 구조의 스크린샷입니다. 또는 흥미로운 새 온체인 게임에 대한 이야기를 Devcon에 있었던 친구들로부터 우연히 들었을 수도 있습니다. 오늘 우리는 OP Stack (Optimism의 모듈식 롤업 아키텍처) 위에 MUD (오픈 소스 온체인 게임 엔진) 로 구축된 완전한 온체인 3D 복셀 세계인 OPCraft를 공식적으로 공개합니다 .그렇다면 OPCraft는 무엇입니까?OPCraft는 Autonomous World입니다. 세계의 모든 단일 측면(모든 강, 풀잎, 산맥 꼭대기에 있는 눈 조각)이 온체인에 존재하는 완전한 온체인 가상 공간과 세계의 모든 단일 작업입니다. Ethereum 트랜잭션으로 발생합니다. 다른 제작 기반 복셀 세...
![Cover image for A Summer of Optimism [KOR]](https://img.paragraph.com/cdn-cgi/image/format=auto,width=3840,quality=85/https://storage.googleapis.com/papyrus_images/b9dab26b6790e5cf020436e92255802b3f2fb2d8ae29de5adc0ce7948bc90d1d.jpg)
A Summer of Optimism [KOR]
이후 기대감이 고조되고 있습니다 . 발표된 지난 주 Optimism Collective가 OP 여름이 될 것입니다. 앞으로 몇 주 동안 우리는 Optimism Collective의 지속 가능한 미래를 어떻게 확장할 계획인지에 대한 자세한 내용을 게시할 예정입니다. 오늘부터 OP Stimpack을 시작으로 합니다. Token House의 첫 번째 공식 조치인 이를 통해 거버넌스 펀드(231,928,234 OP)가 활성화되어 OP 메인넷의 성장에 대한 인센티브가 시작됩니다. 통해 규모에 맞는 지속 가능한 거버넌스를 위한 당사의 장기 비전에 대해 읽어보실 수 있습니다 소급 공공재 자금 지원을 에서 OP 경제학 개요 . 단기적으로는 토큰 공급량(231,928,234 OP)의 5.4%가 거버넌스 펀드를 통해 기존 및 신규 OP 메인넷 프로젝트에 분배될 예정입니다. 우리는 이 새로운 디지털 개척지의 기반을 구축하고 있지만 이를 현실로 가져오는 사람은 프로젝트와 사용자인 여러분입니다 .0에...
Dope Hires & Moar Mainnet in March [KOR]
이것은 우리가 팀에 만든 놀라운 추가 사항을 발표하기 위해 오랫동안 기한이 지난 게시물입니다. 우리는 11월에 Paradigm의 낙관적인 공급을 풍부하게 재확보한 a16z가 주도한 펀딩 라운드를 마감했습니다 . 이 현금을 통해 우리는 공간에서 가장 명석한 마음과 날카로운 운영자와 함께 빠르게 확장할 수 있었습니다. 이런 인재를 채용할 수 있게 되어서 3월에 퍼블릭 테스트넷이 아닌 메인넷에 임의 계약 배포를 시작 합니다!! 자세한 내용은 곧 제공됩니다. 우리는 지금 채용 중 입니다 . 아래 사람들과 같은 사람이라면 채용하고 싶습니다 .마크 타인웨이(영어)Mark는 Bitcoin에 대해 배우고 그것에 대해 더 배우기 위해 모든 것을 포기해야 할 때까지 신경 과학자로서 학문적 경력을 추구했습니다. 그는 bcoin이라는 비트코인의 대체 구현에 기여했으며 Handshake 출시를 도왔고 Optimism에 합류하여 Ethereum 확장 작업을 수행했습니다. “ 블록체인은 조정 문제를 ...
Share Dialog
Share Dialog
<100 subscribers
<100 subscribers
저자: 켈빈 피처

Solidity 개발자: Smock v2를 만나보세요 . Solidity 모킹 라이브러리 . _ Optimism 과 DeFi Wonderland 의 환상적인 팀 간의 협력 .
스마트 계약 테스트는 역사적으로… 어려웠습니까? 어렵지 않다면 혼란스러울 뿐입니다. Solidity 초기에 계약을 테스트하는 가장 좋은 방법은 모든 테스트를 수행할 책임이 있는 다른 계약을 작성하는 것이 었습니다. 이것은 약 20가지의 다른 이유로 끔찍한 생각이었습니다. 가장 중요한 몇 가지를 언급하겠습니다.
Solidity에서 테스트 코드를 작성해야 했습니다.
테스트를 변경하기 위해 테스트 계약을 다시 컴파일해야 했습니다.
테스트 계약과 대상 계약은 동일한 체인 상태를 공유했습니다.
관련된 모든 사람들에게 엄청난 시간 낭비였습니다. 그 당시에는 스마트 계약이 비교적 단순했기 때문에 대부분 괜찮 았습니다 . 그러나 물론 이러한 테스트 인프라 부족은 계약이 매우 복잡할 수 없음을 의미했습니다.
시간이 좀 걸렸지만 마침내 Truffle과 같은 JavaScript 테스트 프레임워크를 사용하여 테스트 환경을 크게 개선했습니다. 우리는 chai 및 mocha와 같은 도구의 멋진 기능 중 일부를 물려받았습니다. 우리의 테스트는 적어도 어느 정도는 읽을 수 있게 되었습니다. 실제로 합리적인 양의 복잡성으로 계약 시스템을 구축할 수 있습니다.
Hardhat은 결국 Truffle이 먼저 수행한 많은 작업을 개선했습니다. 그러나 Hardhat의 주요 발전은 플러그인 시스템이었습니다. 이제 개발자는 Truffle로는 불가능했던 테스트 환경을 쉽게 조작할 수 있게 되었습니다.
그러나이 모든 개선 과정에서 Solidity 개발자는 여전히 매우 구체적인 기능을 단위 테스트 할 수 있도록 Solidity로 작성된 모의 계약 이라는 절대적으로 끔찍한 패턴을 처리해야했습니다 . 내 말은, 정말??? 이것이 그렇게 나쁜 몇 가지 이유는 다음과 같습니다.
Solidity에서 테스트 코드를 작성해야 합니다.
테스트를 변경하려면 테스트 계약을 다시 컴파일해야 합니다.
테스트 계약과 대상 계약은 동일한 체인 상태를 공유합니다.
???
응. 그래도. 우리는 그것을 고쳤습니다.
소개: 작업복 v2. JavaScript에서 조롱하는 계약. 당신이 상상할 수 있는 것보다 더 강력합니다. 다시는 Solidity에서 모의 계약을 작성하지 마십시오.
const myFake = await smock.fake('MyContract'); const myOtherFake = await smock.fake(myContractFactory); const myOtherOtherFake = await smock.fake(myContractABI); const myOtherOtherOtherFake = await smock.fake(myContractInstance);
myFake.myFunction.returns(1234); myFake.myOtherFunction.returns({ myStructField: 1234 }); myFake.myOtherOtherFunction.returns((fnArg) => { return fnArg * 10 }); myFake.myOtherOtherOtherFunction.reverts(); // womp womp!
expect(myFake.myFunction).to.have.been.calledOnce; expect(myFake.myFunction).to.have.been.calledWith(1234); expect(myFake.myFunction).to.have.been.calledBefore(myFake.myOtherFunction);
const myMockFactory = await smock.mock('MyContract');
const myMock = await myMockFactory.deploy();// Does everything a fake can do!
myMock.myFunction.returns(5678);
await myMock.setVariable('myVariable', 1234); await myMock.setVariable('myOtherVariable', { myStructValue: 1234 });
Do I really need to say anything else? Go try it out. It’ll change your life. Seriously.
저자: 켈빈 피처

Solidity 개발자: Smock v2를 만나보세요 . Solidity 모킹 라이브러리 . _ Optimism 과 DeFi Wonderland 의 환상적인 팀 간의 협력 .
스마트 계약 테스트는 역사적으로… 어려웠습니까? 어렵지 않다면 혼란스러울 뿐입니다. Solidity 초기에 계약을 테스트하는 가장 좋은 방법은 모든 테스트를 수행할 책임이 있는 다른 계약을 작성하는 것이 었습니다. 이것은 약 20가지의 다른 이유로 끔찍한 생각이었습니다. 가장 중요한 몇 가지를 언급하겠습니다.
Solidity에서 테스트 코드를 작성해야 했습니다.
테스트를 변경하기 위해 테스트 계약을 다시 컴파일해야 했습니다.
테스트 계약과 대상 계약은 동일한 체인 상태를 공유했습니다.
관련된 모든 사람들에게 엄청난 시간 낭비였습니다. 그 당시에는 스마트 계약이 비교적 단순했기 때문에 대부분 괜찮 았습니다 . 그러나 물론 이러한 테스트 인프라 부족은 계약이 매우 복잡할 수 없음을 의미했습니다.
시간이 좀 걸렸지만 마침내 Truffle과 같은 JavaScript 테스트 프레임워크를 사용하여 테스트 환경을 크게 개선했습니다. 우리는 chai 및 mocha와 같은 도구의 멋진 기능 중 일부를 물려받았습니다. 우리의 테스트는 적어도 어느 정도는 읽을 수 있게 되었습니다. 실제로 합리적인 양의 복잡성으로 계약 시스템을 구축할 수 있습니다.
Hardhat은 결국 Truffle이 먼저 수행한 많은 작업을 개선했습니다. 그러나 Hardhat의 주요 발전은 플러그인 시스템이었습니다. 이제 개발자는 Truffle로는 불가능했던 테스트 환경을 쉽게 조작할 수 있게 되었습니다.
그러나이 모든 개선 과정에서 Solidity 개발자는 여전히 매우 구체적인 기능을 단위 테스트 할 수 있도록 Solidity로 작성된 모의 계약 이라는 절대적으로 끔찍한 패턴을 처리해야했습니다 . 내 말은, 정말??? 이것이 그렇게 나쁜 몇 가지 이유는 다음과 같습니다.
Solidity에서 테스트 코드를 작성해야 합니다.
테스트를 변경하려면 테스트 계약을 다시 컴파일해야 합니다.
테스트 계약과 대상 계약은 동일한 체인 상태를 공유합니다.
???
응. 그래도. 우리는 그것을 고쳤습니다.
소개: 작업복 v2. JavaScript에서 조롱하는 계약. 당신이 상상할 수 있는 것보다 더 강력합니다. 다시는 Solidity에서 모의 계약을 작성하지 마십시오.
const myFake = await smock.fake('MyContract'); const myOtherFake = await smock.fake(myContractFactory); const myOtherOtherFake = await smock.fake(myContractABI); const myOtherOtherOtherFake = await smock.fake(myContractInstance);
myFake.myFunction.returns(1234); myFake.myOtherFunction.returns({ myStructField: 1234 }); myFake.myOtherOtherFunction.returns((fnArg) => { return fnArg * 10 }); myFake.myOtherOtherOtherFunction.reverts(); // womp womp!
expect(myFake.myFunction).to.have.been.calledOnce; expect(myFake.myFunction).to.have.been.calledWith(1234); expect(myFake.myFunction).to.have.been.calledBefore(myFake.myOtherFunction);
const myMockFactory = await smock.mock('MyContract');
const myMock = await myMockFactory.deploy();// Does everything a fake can do!
myMock.myFunction.returns(5678);
await myMock.setVariable('myVariable', 1234); await myMock.setVariable('myOtherVariable', { myStructValue: 1234 });
Do I really need to say anything else? Go try it out. It’ll change your life. Seriously.
No comments yet