Solidity Smart-Contract Advisor adalah alat mutakhir yang dirancang untuk memperluas kemampuan model bahasa tradisional dalam memahami dan memberi nasihat tentang kontrak pintar soliditas. Pada intinya, proyek ini mengintegrasikan model bahasa OpenAI dengan repositori luas dari kontrak pintar yang diverifikasi dan dokumentasi soliditas komprehensif, menciptakan sistem khusus dan sadar konteks yang mampu memberikan wawasan ahli di ranah pengembangan kontrak pintar.
Proyek ini mewakili langkah yang signifikan dalam menjembatani kesenjangan antara model bahasa tujuan umum dan persyaratan khusus yang bernuansa dan khusus dari pengembangan blockchain. Dengan melatih lebih dari 5.000 kontrak pintar yang diverifikasi dan dokumentasi soliditas yang luas, penasihat tidak hanya memberikan jawaban teoretis, tetapi nasihat praktis dan dunia nyata yang didasarkan pada kode dan dokumentasi yang diverifikasi.
Keberhasilan diukur dengan kemampuan sistem untuk secara akurat menguraikan, memahami, dan memberikan saran yang relevan dengan konteks tentang kueri soliditas yang kompleks. Ini dicapai melalui perpaduan teknologi yang canggih, masing -masing memainkan peran penting dalam meningkatkan efektivitas sistem.


Menggunakan Etherscan.py, diunduh 5.000 kontrak pintar yang diketahui dan diverifikasi dari Etherscan API. Ini membentuk tulang punggung analisis kami, menyediakan kode kontrak pintar dunia nyata untuk penyematan dan analisis.
Bersamaan dengan kontrak pintar, dokumentasi yang diekstraksi sebagai file HTML dari situs web dokumentasi soliditas, memastikan basis komprehensif untuk model bahasa.
Model Langchain Retrievalqa yang dibangun khusus memproses data di atas. Saya telah membuat potongan embedding ukuran 1000 dengan tumpang tindih 1000, menghasilkan sekitar 200.000 potongan untuk analisis terperinci.
Untuk kontrak pintar, parser khusus soliditas memecah kontrak menjadi potongan yang dapat dikelola. Untuk konten HTML (dokumentasi resmi soliditas), saya menggunakan pembagi teks standar. Potongan parsed ini kemudian tertanam untuk diproses lebih lanjut.
Dalam proyek ini, Weaviate Vector Database, dilengkapi dengan modul Text2Vec-Contextionary, memainkan peran penting dalam mengelola dan meminta data vektor yang diperoleh dari kontrak pintar soliditas dan dokumentasi. Database vektor seperti Weaviate dirancang untuk menangani data yang di vektor-pada dasarnya, titik data yang diwakili dalam ruang multi-dimensi. Ini sangat berguna dalam ranah pembelajaran mesin dan pemrosesan bahasa alami, di mana data yang kompleks dapat divektor untuk analisis yang efisien dan bermakna.
Weaviate menggunakan model pembelajaran mesin untuk mengubah data teks menjadi vektor-vektor ini, memungkinkan pencarian berkecepatan tinggi dan relevan secara semantik. Dalam konteks Solidity Smart-Contract Advisor, Weaviate Stores dan mengelola embeddings (representasi vektor) dari kontrak dan dokumentasi soliditas. Embeddings ini menangkap makna dan konteks teks yang bernuansa, memungkinkan sistem untuk memberikan respons yang akurat dan sadar konteks terhadap kueri pengguna.
Modul Text2Vec-Contextionary secara khusus sangat penting untuk memahami konteks tekstual. Ini memungkinkan sistem untuk menafsirkan makna di balik kata -kata dan frasa dalam konteks soliditas, meningkatkan relevansi dan keakuratan hasil dan tanggapan pencarian.
Peran Weaviate dalam proyek ini adalah multifaset:
Untuk informasi lebih lanjut tentang Weaviate dan kemampuannya, Anda dapat mengunjungi situs web dan dokumentasi resmi mereka:
Penggunaan Weaviate dalam proyek ini memastikan bahwa penasihat Smart-Contract Solidity tidak hanya kuat dalam kemampuan analitiknya tetapi juga efisien dan dapat diukur, menjadikannya alat canggih untuk analisis dan saran kontrak pintar.

Saya mengadaptasi dan secara signifikan memodifikasi UI dari Whuang214 ReactJs dan antarmuka berbasis naskah ini menyerupai model interaksi chatgpt, yang dirancang untuk kasus penggunaan spesifik kami.
API Flask yang berbasis di Python ini berfungsi sebagai jembatan penting antara pertanyaan pengguna dan backend yang kuat. Ini secara efisien menangani interaksi dengan vektor weaviate dan memanfaatkan model GPT-4-0613 Openai untuk menghasilkan respons. Pilihan GPT-4-0613 bersifat strategis, karena sifatnya yang kurang ketat, yang sangat bermanfaat untuk memberikan jawaban yang lebih langsung dan tanpa filter pada topik sensitif, seperti entri kembali dalam kontrak pintar.
Bagi mereka yang tertarik untuk mengeksplorasi model bahasa Openai lainnya, daftar komprehensif dapat ditemukan di tinjauan model OpenAI.
Selain itu, Flask API mengintegrasikan Langchain, kerangka kerja yang dirancang untuk meningkatkan kemampuan model bahasa melalui agen dan rekayasa cepat. Arsitektur modular Langchain memungkinkan integrasi yang mudah dari model bahasa yang berbeda, membuat sistem ini sangat mudah beradaptasi dan diperpanjang. Dengan antarmuka yang sama, berbagai model bahasa lainnya dapat dimasukkan dengan mulus, menawarkan fleksibilitas dan ruang lingkup untuk peningkatan masa depan dalam kemampuan respons.
Kombinasi labu, weaviate, dan langchain menyediakan infrastruktur backend yang kuat, terukur, dan serbaguna, yang mampu menangani pertanyaan kompleks dengan presisi dan memberikan respons yang relevan secara kontekstual dalam domain kontrak pintar soliditas.

Langchain mewakili pendekatan revolusioner dalam pemanfaatan model bahasa, memainkan peran penting dalam proyek penasihat smart-kontrak soliditas kami. Ini adalah kerangka kerja yang dirancang khusus untuk menambah kemampuan model bahasa, seperti yang disediakan oleh OpenAi, melalui penggunaan agen dan pengambilan augmented.
Dalam langchain, agen adalah komponen modular yang memungkinkan berbagai interaksi dengan model bahasa. Mereka dapat diprogram untuk melakukan tugas -tugas tertentu, seperti penguraian teks, menghasilkan pertanyaan, atau menangani respons. Pendekatan modular ini memungkinkan tingkat penyesuaian dan fleksibilitas yang tinggi, memungkinkan pembuatan alur kerja kompleks yang dapat memproses, menganalisis, dan menanggapi pertanyaan pengguna dengan presisi yang tidak tertandingi.
Salah satu fitur utama Langchain adalah kemampuannya untuk melakukan pengambilan augmented. Ini melibatkan penggunaan model bahasa untuk meningkatkan pengambilan informasi dari database atau sumber lain. Dalam konteks proyek ini, kemampuan pengambilan augmented Langchain memungkinkan pencarian yang lebih canggih dan relevan secara kontekstual dalam database vektor Weaviate. Ini memastikan bahwa informasi yang diambil tidak hanya relevan tetapi juga disesuaikan dengan nuansa spesifik kontrak pintar soliditas.
Integrasi Langchain dalam API Flask ini menambahkan lapisan kecerdasan dan kemampuan beradaptasi. Ini memberdayakan sistem untuk menangani pertanyaan yang kompleks dan beragam yang mungkin dihadapi oleh model bahasa mandiri. Dengan memanfaatkan kekuatan komputasi mentah dari model bahasa dan penataan strategis yang ditawarkan oleh Langchain, sistem dapat memberikan tanggapan yang mendalam, akurat, dan sangat relevan terhadap berbagai kueri yang terkait dengan kontrak pintar soliditas.
Penggunaan Langchain pada dasarnya mengubah proyek menjadi alat yang lebih dinamis, cerdas, dan responsif, mampu mengatasi kebutuhan rumit dan berkembang dari pengembang dan penggemar soliditas.
Untuk informasi lebih lanjut dan menyelam lebih dalam ke Langchain dan kemampuannya, kunjungi langchain.
Untuk berinteraksi dengan Smart-Contract Advisor, pengguna dapat memasukkan pertanyaan mereka melalui UI. Sistem ini dirancang untuk menangani pertanyaan terkait soliditas spesifik, memberikan respons yang terperinci dan akurat. Misalnya, menanyakan tentang entrancy akan menghasilkan jawaban langsung dan informatif. Atau bahkan Anda dapat meminta audisi kode Anda. Sangat cocok dengan pertanyaan terkait solid. UI memiliki kemampuan yang hampir sama dari antarmuka ChatGPT termasuk, mendaftar ke sejarah obrolan. Selain itu, jika Anda memeriksa konsol, Anda akan mengetahui bahwa model LLM menyusun vektor mana dari Weaviate. Bisa jadi beberapa kontrak pintar yang diverifikasi atau bahkan dokumentasi resmi soliditas. Semua digabungkan, diperiksa dan memiliki kesimpulan.

Menyiapkan Solidity Smart-Contract Advisor melibatkan beberapa langkah, termasuk mengonfigurasi basis data, variabel lingkungan, dan menjalankan server untuk backend dan frontend. Di bawah ini adalah instruksi terperinci:
Memulai Layanan Mongodb dan Weaviate :
docker-compose up -d
Mengatur Variabel Lingkungan :
.env di direktori root proyek Python dan sertakan yang berikut: OPENAI_KEY=your_openai_key
ETHERSCAN_KEY=your_etherscan_key
MONGODB_DSN=your_mongodb_dsn
Menjalankan backend dan klien :
backend dan client . Masing -masing perlu dimulai secara terpisah.backend dan jalankan: npm i
npm run dev
client dan jalankan perintah yang sama: npm i
npm run dev
Mengunduh Kontrak Cerdas :
contracts.csv , yang dapat diunduh dari Etherscan.etherscan.py untuk mengunduh 5000 kode sumber kontrak pintar yang diverifikasi ke folder downloaded_contracts : python etherscan.py

weaviate_ingest.py untuk memotong data dan memasukkannya ke dalam database vektor weaviate: python weaviate_ingest.py

Mengenakan file HTML :
weaviate_ingest_htmls.py dengan cara yang sama: python weaviate_ingest_htmls.py
Alternatif untuk Weaviate - Menggunakan Pinecone :
pinecone_ingest.py disediakan: python pinecone_ingest.py
Setelah menyelesaikan langkah-langkah ini, penasihat kontrak pintar soliditas Anda harus siap dan berjalan, siap untuk memberikan wawasan dan saran tentang kontrak pintar soliditas.
Semua kontribusi dipersilakan :)
Solidity Smart-Contract Advisor, sebagaimana berdiri, adalah alat yang kuat dan inovatif. Namun, ranah blockchain dan teknologi kontrak pintar terus berkembang, menghadirkan banyak peluang untuk peningkatan dan perluasan proyek ini di masa depan.
Deep Dive Into Yul - The Intermediate Language : A Key Area untuk Pengembangan Masa Depan adalah Penggabungan YUL, Bahasa Menengah Ethereum. Dengan memahami dan menganalisis YUL, penasihat kontrak pintar dapat menawarkan wawasan tidak hanya pada tingkat soliditas, tetapi juga pada tingkat yang lebih granular dari kontrak yang dikompilasi. Ini membuka jalan baru untuk memahami bagaimana kode soliditas diterjemahkan ke dalam operasi tingkat rendah.
Analisis Level Opcode dan Optimalisasi Gas : Salah satu aspek yang paling menantang dari pengembangan kontrak pintar adalah mengoptimalkan konsumsi gas. Dengan memperluas kemampuan penasihat untuk memasukkan analisis tingkat opcode, pengembang dapat menerima saran untuk pola kode yang lebih efisien dan optimasi gas potensial. Ini akan melibatkan pengajaran sistem untuk memahami seluk -beluk biaya eksekusi opcode dan bagaimana mereka menumpuk dalam skenario kontrak pintar yang berbeda.
Akses yang nyaman ke dukungan LLM untuk pengkodean tingkat rendah : Meningkatkan penasihat untuk memberikan dukungan yang nyaman dan ramah pengguna untuk praktik pengkodean tingkat rendah. Ini dapat melibatkan mengintegrasikan petunjuk khusus atau agen dalam langchain yang mahir dalam pemahaman dan menyarankan optimisasi di YUL atau langsung dalam opcode. Tujuannya adalah untuk membuat optimasi gas dan pengkodean tingkat rendah lebih mudah diakses oleh pengembang yang terutama bekerja dengan bahasa tingkat tinggi seperti soliditas.
Menjembatani pengembangan tingkat tinggi dan tingkat rendah : Dengan menjembatani kesenjangan antara kode soliditas tingkat tinggi dan YUL atau opcode tingkat rendah, penasihat dapat memberikan pandangan holistik tentang pengembangan kontrak pintar. Ini termasuk tidak hanya menulis kode tingkat tinggi yang efisien tetapi juga memahami implikasinya di tingkat eksekusi blockchain.
Peningkatan di masa depan ini di ranah YUL dan optimasi opcode ditujukan untuk memberikan pengembang wawasan yang lebih dalam tentang cara kerja dalam kontrak pintar mereka. Ini tidak hanya akan membantu dalam menulis kode yang lebih efisien dan hemat biaya tetapi juga berkontribusi pada pemahaman yang lebih baik tentang lingkungan eksekusi Ethereum, yang pada akhirnya mengarah pada pengembangan kontrak pintar yang lebih kuat dan dioptimalkan.
Peningkatan ini bertujuan untuk memperkuat Solidity Smart-Contract Advisor sebagai alat mutakhir, sangat diperlukan bagi pengembang di ruang blockchain. Tujuan utamanya adalah untuk menciptakan sistem yang dinamis dan cerdas yang tidak hanya menanggapi kebutuhan saat ini tetapi juga mengantisipasi dan beradaptasi dengan tren masa depan dalam pengembangan kontrak pintar.
Proyek ini dirilis di bawah lisensi MIT.
Deniz Umut Dereli