paint-brush
Solidity 개발자로서의 나의 여정~에 의해@alcueca
2,579 판독값
2,579 판독값

Solidity 개발자로서의 나의 여정

~에 의해 Alberto Cuesta Cañada 7m2023/11/27
Read on Terminal Reader

너무 오래; 읽다

저는 5년 전, 38세의 나이에 스마트 계약 코딩을 시작했고, 전문적인 프로그래밍 경험이 없는 상태에서 최첨단 스마트 계약 구축에 이르렀습니다.
featured image - Solidity 개발자로서의 나의 여정
Alberto Cuesta Cañada  HackerNoon profile picture

저는 5년 전, 38세의 나이에 스마트 계약 코딩을 시작했고, 전문적인 프로그래밍 경험이 없는 상태에서 최첨단 스마트 계약 구축에 이르렀습니다.


많은 사람들이 어떻게 비슷한 길을 따를 수 있는지 질문했습니다. 성공을 위한 특별한 리소스나 비결은 없지만 사용할 수 있는 패턴이 있습니다.


여기 내 여행이 있습니다.

시작

2018년에 저는 최근 아내와 어린 자녀와 함께 멜버른에서 리스본으로 이사하여 가족과 더 가까워졌습니다. 나는 투자 은행을 위한 슈퍼컴퓨팅 엔지니어이자 솔루션 설계자로서 괜찮은 경력을 갖고 있었고 리스본은 내가 일자리를 찾을 수 있을 만큼 충분히 클 것이라고 생각했습니다.


곧 저는 리스본의 취업 시장에는 슈퍼컴퓨팅 엔지니어가 전혀 필요하지 않으며 제가 가진 솔루션 설계 배경은 중간 관리자 역할을 지루하게 만들 뿐이라는 사실을 깨달았습니다.


저는 오랫동안 블록체인 기술에 관심이 있었지만 실제로 깊게 들어가본 적은 없었습니다. 그러다가 블록체인 엔지니어를 고용하는 것이 얼마나 어려운지에 대한 기사를 읽고 기회를 보았습니다.

나는 블록체인 분야에서 일자리를 찾을 수 있도록 영감을 준 작가에게 감사의 마음을 전하기 위해 편지를 썼습니다. 우리는 이야기를 나누었고 그의 친구와 함께 높은 이상을 지닌 블록체인 컨설팅 회사인 TechHQ를 시작하기로 결정했습니다. 3명으로 구성된 컨설팅 회사 내에서 저는 기술 전문가가 될 것입니다.


기업 솔루션 설계자에서 고객에게 판매할 수 있는 블록체인 기반 프로젝트를 만드는 데까지 대략 한 달이 걸렸습니다.


사전 경험이 없으면 기술 전문가가 될 것입니다.


내 임무 중 하나는 고객을 유치하기 위한 블록체인 기술 기사를 작성하는 것이었고, 이는 나를 파트너를 만나게 했던 기사와 동일했습니다. 이 기사를 작성하고 내가 배운 내용을 공개하는 것이 내 경력의 핵심이 될 것입니다.


내 첫 번째 기사는 다음과 같습니다. 그 일을 시작하기 블록체인에서의 첫 번째 단계를 자세히 설명합니다. Solidity에 대한 나의 소개는 크립토좀비 튜토리얼 .


우리의 첫 번째 비즈니스 기회는 몇 달 후 다음 프로젝트로 시작되었습니다. 시멘트DAO . 우리는 베르나르도(Bernardo)에 탑승했습니다. 젊고 재능 있는 지역 해커 , 어느 시점에서 관련된 수학에 대한 도움을 요청했습니다. 아는 게 별로 없었지만 시도해 볼 수는 있었어 고정성은 로그를 사용하여 맞춤형 AMM 곡선을 구축하는 작업입니다.

이 작업에는 약 한 달이 걸렸으며 Bernardo가 나에게 Solidity, javascript, git 및 truffle을 가르쳐주었습니다. 나는 정말로 아무것도 몰랐다. 결과는 2018년 기준으로도 지나치게 엔지니어링되고 비효율적이었습니다. 내 무지 속에 ,
나는 그것이 최고 수준이라고 진심으로 믿었습니다 .


결과는 훌륭하지 못했습니다. 2018년 기준으로도 지나치게 엔지니어링되고 비효율적이었습니다.


일부 견고성 코딩 기능을 습득하고 Bernardo만이 프론트엔드 개발에 능숙한 덕분에 저는 CementDAO의 스마트 계약을 인수했습니다. 안타깝게도 Fixidity의 비효율적인 구현으로 인해 우리는 메인넷 단계로 진출하지 못했습니다.


더 많은 고객을 검색하면서 더 많은 기사를 쓸 수 있도록 실험을 계속했습니다. 왜냐하면 그것이 우리가 고객을 확보할 것으로 예상했기 때문입니다. 결국 나는 흥미로운 아이디어를 생각해 냈습니다. 공급망 솔루션 . 비록 이 아이디어는 성공하지 못했지만, 이로 인해 나는 다음과 같은 생각을 하게 되었습니다.역할 기반 액세스 제어 계약 사실 괜찮았어요.


파산이 임박해 보였을 때 바로 이 코드가 우리에게 또 다른 고객을 확보해 주었습니다. AllianceBlock 권한이 부여된 여러 역할을 가진 블록체인 발행 플랫폼을 코딩하기 위해 우리를 고용했습니다.


스마트 계약의 끔찍한 성능에도 불구하고 그들은 우리가 제공한 Ganache에 대한 개념 증명만 필요했습니다. 저는 스마트 계약 아키텍처에 대한 중요한 교훈을 배웠습니다. 온체인 스토리지 , 프런트엔드 통합.


형편없는 실적에도…중요한 교훈 배웠다


우리는 다시 수익이 없었고 현금도 매우 부족했습니다. 나는 우리가 파산하지 않도록 급여를 포기하고 회사의 3분의 1을 매입하기로 결정했습니다. 저는 우리가 회사로 성장할 좋은 기회가 없다고 생각했지만 상관없었습니다. 저는 코딩하고, 배우고, 즐기고 있었습니다. 훌륭한 블록체인 경험을 얻는 것은 저렴한 거래처럼 보였습니다.


우리가 더 많은 고객을 찾는 동안. 나는 협력했다 hq20-계약 ~와 함께 유블리스 , 다양한 견고성 패턴 및 사용 사례를 개발하고 문서화합니다. 당연히 나는 썼다 많은 조항 그들에 대해 .


전환점

결국 회사는 다시 자금이 부족해졌고, 우리 모두는 일자리를 찾기 시작해야 했습니다. 그러다가 우연히 한 가지를 발견했습니다.OpenZeppelin의 공개 문제 . 그들은 연결 목록과 같은 것이 필요했고 저는 먼저 CementDAO에 대해 그 다음 hq20-contract에 대해, 심지어는 그렇게 했습니다. 그것에 대해 좋은 기사를 썼습니다 .


와 논의한 후 엔벤투로 , 내 기여는 다음과 같이 통합되었습니다. EnumerableSet.sol OpenZeppelin의 릴리스 중 하나입니다. 나는 해냈다. 내 코드 중 일부가 마침내 활성화되었습니다. OpenZeppelin도 마찬가지입니다.


이러한 성공에 힘입어 저는 액세스 제어 계약을 개정하려는 OpenZeppelin의 과제에 착수했습니다. 나는 실패한 공급망 애플리케이션 주제에 관해 최첨단 작업을 수행했고 이를 AllianceBlock으로 완성했으며 다시 한번 수행했습니다.주제에 대해 철저한 기사를 작성했습니다. .


나는 그것을 할 수 있다는 것을 알았습니다. 이는 결국 의 출판으로 이어졌습니다. AccessControl.sol 에서 3.0 릴리스 공개 제플린 계약을 맺은 것은 제 경력에 있어서 다시 한 번 큰 이정표가 되었습니다.


나는 해냈다. 내 코드 중 일부가 마침내 활성화되었습니다. OpenZeppelin도 마찬가지입니다.


나는 여전히 직업이 필요했고 BeyondSkills의 블록체인 강사가 되었습니다. Solidity 프로그래밍을 가르치려면 온라인 강좌를 만들어야 했습니다. 늘 그렇듯이 저는 그 일을 할 자격이 별로 없었습니다. 나는 몇 가지 코딩 방법을 알고 있었지만 지식에는 큰 격차가 있었습니다. 그때까지 저는 계약을 직접 배포한 적도 없었습니다.


저는 비디오로 이야기하고 견고성 개발에 대한 튜토리얼을 해야 했습니다. 또한 코스는 일관성이 있어야 했기 때문에 철저해야 했습니다. 여기에 적용된 기사와 동일한 패턴입니다. 저는 뭔가를 배우고 즉시 가르치면서 Solidity 개발에 대해 많은 것을 배우게 되었습니다.


불행하게도 회사는 법적 문제로 인해 문을 닫았으며 해당 내용은 공개되지 않았습니다. 어쩌면 그게 더 나을 수도 있습니다.


나는 뭔가를 배우고 즉시 가르치면서 견고성 개발에 대해 많은 것을 배우게 되었습니다.


그 과정을 녹음하는 동안 나에게 접근했습니다. 앨런 니머그 고정 소수점 수학에 대한 도움을 받으려면 그가 가지고 있던 백서 . 당시 저에게 연락한 아이디어가 있는 많은 사람들과 달리 Allan은 제가 들어본 적도 없는 VC 펀드에서 돈을 받았고, 어형 변화표 , 그리고 나는 그를 진지하게 받아들였습니다.

그때까지 저는 Fixidity를 코딩하고 고정 소수점 수학에 관한 여러 기사를 게시했으며 OpenZeppelin과 Solidity 핵심 팀 모두를 도우려고 노력했지만 실패했습니다. 나는 또한 로그 함수를 갖춘 AMM이 사소하지 않다는 것을 알고 있었고, 이를 작동시키기 위해 계약을 맺을 수 있는 Mikhail 직원이 한 명 있다는 것을 알고 있었습니다.

저는 @yield의 첫 번째 채용자였습니다. 나는 Allan에게 고용하도록 설득했습니다. 브루스 TechHQ 시절 프론트엔드 엔지니어로 일했던 시절, 그리고 우리 셋 모두 아주 어린 친구의 도움을 받아 게오르기오스 , 메인넷에서 Yield v1을 성공적으로 출시했습니다.


나는 많은 것을 배웠습니다. 담보부 부채 엔진 , 프로토콜 통합 , 반올림 오류, 오프체인 허가 , 플래시론 , 그리고 가스 효율 , 몇 가지 예를 들자면. 이전에 한 번도 해본 적이 없는 일을 하려는 대부분의 시도와 마찬가지로 그것은 큰 성공을 거두지 못했습니다.


우리가 배운 것 중 하나는 Uniswap과 달리 제품 시장 적합성을 검색하는 프로토콜을 변경해야 한다는 것입니다. 계약이 대부분 불변이었기 때문에 곧 Yield v2 작업을 시작했습니다.

오늘로 빨리감기

Yield Protocol v2는 약 2년 동안 출시되었고, 이를 통해 많은 것을 배웠지만 지금은 종료됩니다. 우리의 기술 작업은 최고 수준이었지만 고정 금리는 현재 분산형 금융에 적합한 제품 시장이 없습니다.


나는 다시 야생에서 어려운 길을 선택하고 있으며, 또 다른 수석 엔지니어/CTO 역할을 맡는 대신 내가 배운 교훈을 통해 이익을 얻을 수 있는 다른 스타트업의 조언자로 자리매김하고 있습니다. 이를 수행하는 방법에 대한 매뉴얼이 없으며 내 지식의 격차가 크다는 것을 알고 있지만 개선의 기회도 마찬가지입니다.


이제 패턴이 보일 것입니다. 나는 내 안전 지대에서 벗어나 자주 실패하지만 항상 내가 배운 것을 다른 사람들에게 가르칩니다. 바로 이 기사가 하나의 예라고 볼 수 있습니다.


운이 좋다면 CementDAO, AllianceBlock, OpenZeppelin 계약, BeyondSkills 강좌, 마지막으로 Yield와 같이 누군가가 원하는 것을 찾을 수 있습니다. 도움이 필요한 사람을 찾을 수 없다면 내 모든 기사처럼 항상 배우고 쓸 내용이 있습니다.


나는 내 안전 지대에서 벗어나 자주 실패하지만 항상 내가 배운 것을 다른 사람들에게 가르칩니다.


노력하고, 실패하고, 배우고, 가르치는 순환은 제가 발명한 것이 아니지만 효과가 있습니다. 그것은 종종 나를 바보처럼 보이게 만들고, 어쩌면 그것이 어떤 사람들에게는 가장 어려운 부분일 수도 있습니다. 나 자신은 실패를 자랑스럽게 여기고 있습니다.


읽어 주셔서 감사합니다. 이것이 당신에게 영감을 줄 수 있기를 바랍니다. 행운을 빌어요.